ip would be best implemented as

   ip=: * * <.@|

as it would return an integer result.

Louis

> On 06 Aug 2017, at 12:17, Skip Cave <s...@caveconsulting.com> wrote:
> 
> All, Thanks for the help.
> 
> Here's some real numbers from a problem I'm working on:
> Calculate some values from this equation:
>    v=:2%(3r19-%1 2 3 245 246 247 248)
> v
>    _2.375 _5.84615 _11.4 13.0028 13.0014 13 12.9986
> Raul's first suggestion:
>    1|v
> 0.625 0.153846 0.6 0.0027933 0.00139082 0 0.998621
> More precision, but signs are wrong on the negative numbers.
> 
> Nolaig's suggestion:
>     (- <.) v
> 0.625 0.153846 0.6 0.0027933 0.00139082 1.77636e_15 0.998621
> Negative signs are still wrong, and the 6th entry should be zero. Looks
> like a compare tolerance problem.
> 
> Pascal's solution:
> 
>   1 (| |)v
> 
> 0.375 0.846154 0.4 0.0027933 0.00139082 0 0.998621
> Still has the negatives wrong.
> 
> Martin's solution:
> fp=.**1||
> 
>   fp v
> 
> _0.375 _0.846154 _0.4 0.0027933 0.00139082 0 0.998621
> Negatives are right, zeroes are right. This fractional part verb needs to
> be in the documentation as part of the numbers chapter.
> 
> Also the integer part verb: ip=.]-**1||    should be included in the
> numbers section as well.
>   ip v
> 
> _2 _5 _11 13 13 13 12
> 
> Skip
> 
> Skip Cave
> Cave Consulting LLC
> 
> On Sun, Aug 6, 2017 at 6:42 AM, Raul Miller <rauldmil...@gmail.com> wrote:
> 
>> 1&| does work, actually.
>> 
>> And, if you want an offset of -1 on that result when the original
>> value was negative, you can use (1&| - 0&>)
>> 
>> Thanks,
>> 
>> --
>> Raul
>> 
>> On Sun, Aug 6, 2017 at 3:19 AM, Martin Kreuzer <i...@airkreuzer.com>
>> wrote:
>>> In easy steps (and for further reference) ...
>>> 
>>> From these test data (two floats, two integers, different signs), to get
>> the
>>> fractional parts
>>> 
>>>   v=. 2.25 _8.11 16 _3
>>> 
>>> simply taking the Residue (when dividing by 1) doesn't work (error at
>>> negative float position)
>>> 
>>>   1|v
>>> 0.25 0.89 0 0
>>> 
>>> So first get Magnitude
>>> 
>>>   | v
>>> 2.25 8.11 16 3
>>> 
>>> then take Residue
>>> 
>>>   1 | (| v)
>>> 0.25 0.11 0 0
>>> 
>>> then get the sign right (see Raul's remark below)
>>> 
>>>   (*v) * (1 | | v)
>>> 0.25 _0.11 0 0
>>> 
>>> and put it as verb (fp), written as a fork
>>> 
>>>   fp=. * * 1||
>>>   fp v
>>> 0.25 _0.11 0 0
>>> 
>>> -M
>>> 
>>> 
>>> At 2017-08-06 02:14, you wrote:
>>> 
>>>> Eh... but that's wrong.  You can't add any integer to 0.542857 to get
>>>> _0.542857.
>>>> 
>>>> If you want signed fractions, you'd need something like (*@] * (| |))
>>>> 
>>>> Thanks,
>>>> 
>>>> --
>>>> Raul
>>>> 
>>>> 
>>>> On Sat, Aug 5, 2017 at 10:01 PM, 'Pascal Jasmin' via Programming
>>>> <programm...@jsoftware.com> wrote:
>>>>> combining other answers we get the cute:
>>>> 
>>>>> 1 (| |)  _0.542857 _1.1875 1.96552 2.92308 4.13043 5.7 7.82353 10.8571
>>>>> 15.5455 23.75
>>>> 
>>>> 
>>>> 
>>>> 
>>>>> ________________________________
>>>>> From: Bill <bbill....@gmail.com>
>>>>> To: "programm...@jsoftware.com" <programm...@jsoftware.com>
>>>>> Sent: Saturday, August 5, 2017 8:30 PM
>>>>> Subject: Re: [Jprogramming] Fractional parts
>>>> 
>>>> 
>>>> 
>>>>> this also depends on what do you expect for negative numbers.
>>>> 
>>>>> Sent from my iPhone
>>>> 
>>>>> On 6 Aug, 2017, at 7:35 AM, Skip Cave <s...@caveconsulting.com>
>> wrote:
>>>> 
>>>>>> Oops! i meant:
>>>>>> 
>>>>>> How does one find the fractional parts of a vector of floating point
>>>>>> numbers?
>>>>>> 
>>>>>> 0.542857 1.1875 1.96552 2.92308 4.13043 5.7 7.82353 10.8571 15.5455
>>>>>> 23.75
>>>>>> 41.8 114 247
>>>>>> 
>>>>>> i want:
>>>>>> 0.542857 0.1875 0.96552 0.92308 0.13043 0.7 0.82353 0.8571 5.5455
>> 0.75
>>>>>> 0.8
>>>>>> 0 0
>>>>>> 
>>>>>> (Last two integers have zero fractional part.)
>>>>>> 
>>>>>> 
>>>>>> Skip Cave
>>>>>> Cave Consulting LLC
>>>>>> 
>>>>>> On Sat, Aug 5, 2017 at 6:30 PM, Skip Cave <s...@caveconsulting.com>
>>>>>> wrote:
>>>>>> 
>>>>>>> How does one find the fractional parts of a vector of floating point
>>>>>>> numbers?
>>>>>>> 
>>>>>>> 0.542857 1.1875 1.96552 2.92308 4.13043 5.7 7.82353 10.8571 15.5455
>>>>>>> 23.75
>>>>>>> 41.8 114 247
>>>>>>> 
>>>>>>> i want:
>>>>>>> 0.542857 0.1875 0.96552 0.92308 0.13043 0.7 0.82353 0.8571 5.5455
>> 0.75
>>>>>>> 0.8
>>>>>>> 114 247
>>>>>>> 
>>>>>>> Skip
>>>>>>> 
>>>>>>> Skip Cave
>>>>>>> Cave Consulting LLC
>>>>>> ------------------------------------------------------------
>> ----------
>>>>>> 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
>>> 
>>> 
>>> ----------------------------------------------------------------------
>>> 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