Yeah, it's a bug. But I'm pretty sure it's a bug in the interpreter,
which your code is simply reporting on.

-- 
Raul


On Sat, Feb 6, 2016 at 7:53 PM, Marshall Lochbaum <[email protected]> wrote:
> The spec is that if there is a noun of the given type that matches, it
> should be returned. So this is actually a bug, given:
>
>    MAX_ptype_
> 9223372036854775807
>    MAX_ptype_ -: 432.1-~2^63
> 1
>
> (Note that (431-~2^63) is exactly the same as (2^63), as one can verify
> with -:!.0).
>
>
> However, converting floats to integers only up to comparison tolerance
> doesn't seem right since it allows us to convert much larger numbers
> to the same value MAX_ptype_ (up to (+/2^63 19)). I considered at one
> point requiring
>
>    y -: (3!:0 y) typecast x typecast y
>
> but that doesn't seem to make sense either, as it prevents sending a
> number like (<:2^62), which is close to but not exactly equal to a
> float, to that float:
>
>    (, 4 typecast 8 typecast ]) <:2<.@^62
> 4611686018427387903 4611686018427387904
>    (-: 4 typecast 8 typecast ]) <:2<.@^62
> 0
>
> I will make typecast follow the current spec (with relatively liberal
> float->int conversion). However, it might make sense to also have a
> strict conversion function for numbers that obeys the additional rule,
> and only converts an int if there's a float that uniquely represents it.
>
> Marshall
>
> On Sat, Feb 06, 2016 at 06:59:06PM -0500, Raul Miller wrote:
>> Hmm... I guess throwing an error works for cases like
>>    4 typecast (2^63)-432.1
>>
>> It would be nice if that particular integer could be converted, but
>> mostly no one should care.
>>
>> Anyways, nice piece of work (though I'll have to admit I did not
>> exercise it thoroughly - I am only assuming it works well for many
>> cases).
>>
>> Thanks,
>>
>> --
>> Raul
>>
>>
>> On Sat, Feb 6, 2016 at 4:38 PM, Marshall Lochbaum <[email protected]> 
>> wrote:
>> > Based on the recent discussions about integers and floats, I decided to
>> > make a general tool to convert between various J types. It's hosted
>> > here:
>> >
>> > https://github.com/mlochbaum/JScripts/blob/master/Misc/typecast.ijs
>> >
>> > The script defines typecast, a verb to convert between types while
>> > maintaining J equivalence (-:), and numcast, a verb which converts
>> > between numeric types and guarantees no errors. Both of these operations
>> > are quite error-prone, so it's good to have a reference with (lightly,
>> > at the moment) tested verbs to perform them.
>> >
>> > My goal is to eventually have a glossary of ways to convert between
>> > types. I will probably make typecast suggest alternative conversion
>> > methods if it fails on a particular argument. So I'm curious if anyone
>> > knows of interesting and useful ways to convert types. The ones I know
>> > of are:
>> >
>> > - Conversions (3!:x) from numbers to bytes
>> > - (0&~:) to convert numbers to booleans
>> > - (mod 2^64) conversion from exact to 64-bit integer
>> > - Representations (5!:x) from nouns (or other parts of speech) to
>> >   strings or boxes.
>> > - Gerund representation for a verb
>> > - The sneaky trick which boxes a part of speech directly
>> >
>> > Any others?
>> >
>> > Marshall
>> > ----------------------------------------------------------------------
>> > For information about J forums see http://www.jsoftware.com/forums.htm
>> ----------------------------------------------------------------------
>> For information about J forums see http://www.jsoftware.com/forums.htm
> ----------------------------------------------------------------------
> For information about J forums see http://www.jsoftware.com/forums.htm
----------------------------------------------------------------------
For information about J forums see http://www.jsoftware.com/forums.htm

Reply via email to