# Re: [Jprogramming] Fractional parts

```Credit should go to the people who suggested the building blocks, e.g.
(1|y) Raul  --  (1||y) Pascal  --  (*y) Raul```
```
which I only picked up to assemble

fp1=. **1||

(get fractional part and show negative sign).

```
Agreed, without proper specification one finds oneself travelling the road of speculation ...
```
These variants

fp2 =. 1&| - 0&>

(get fractional part, show negative sign, offset -1 for any negative *integer*)

fp3=. 1&|`*@.(0&>"0)

```
(get fractional part from any positive number, offset -1 for any negative found, taking fp2 to the extreme ...)
```
are interesting, but remain speculative.

-M

At 2017-08-08 06:05, you wrote:

```
```signum is zero tolerant but that may be what you intended.

On Tue, Aug 8, 2017 at 1:15 PM, Martin Kreuzer <i...@airkreuzer.com> wrote:
> Raul, picking up your suggestion,

> take the fractional part if positive number,
> mark by _1 if negative (sort of a mask?)

>    v=. 2.25 _8.11 16 _3

> using Agenda

>    (1&|)`(*) @. (0&>"0) v
> 0.25 _1 0 _1
>    fp3=. 1&|`*@.(0&>"0)
>    fp3 v
> 0.25 _1 0 _1

> -M

> At 2017-08-07 22:26, Raul Miller wrote:

>> When I suggested an offset of _1 I did not understand the full
>> specification, and was fishing for clues.
>>
>> Thanks,
>>
>> --
>> Raul
>>
>>
>> On Mon, Aug 7, 2017 at 5:30 PM, Martin Kreuzer <i...@airkreuzer.com>
>> wrote:
>> > I'm not sure what Raul had in mind when he suggested an offset of _1 to
>> > mark
>> > the position of negatives (maybe that would help further calculations or
>> > decisions on the data set, I do not have the experience to judge that);
>> > at
>> > this stage it only works with integers but not with floats ...
>> > -M
>>
>>
>> > At 2017-08-07 21:08, you wrote:
>>
>> >> Ooops! it looks like fp2 isn't so good after all.
>> >>
>> >> Skip
>> >>
>> >> Skip Cave
>> >> Cave Consulting LLC
>> >>
>> >> On Mon, Aug 7, 2017 at 4:02 PM, Martin Kreuzer <i...@airkreuzer.com>
>> >> wrote:
>> >>
>> >> > Was it meant like that..?
>> >>
>> >> >    fp2 0.3 _0.3 3 _3
>> >> > 0.3 _0.3 0 _1
>> >>
>> >> > -M
>> >>
>> >>
>> >> > At 2017-08-07 20:38, you wrote:
>> >>
>> >> > It looks like we have two good solutions to find a fractional part:
>> >> >>
>> >> >>     v
>> >> >>
>> >> >> _2.375 _5.84615 _11.4 13.0028 13.0014 13 12.9986
>> >> >>     fp1=. * * 1||    NB. Martin
>> >> >>     fp2 =. (1&| - 0&>)   NB.  Bo & Raul collaboration.
>> >> >>
>> >> >>     fp1 v
>> >> >>
>> >> >> _0.375 _0.846154 _0.4 0.0027933 0.00139082 0 0.998621
>> >> >>
>> >> >>     fp2 v
>> >> >>
>> >> >> _0.375 _0.846154 _0.4 0.0027933 0.00139082 0 0.998621
>> >> >>
>> >> >>
>> >> >> Also the converse - integer part:
>> >> >>
>> >> >>     ip=: * * <.@|
>> >> >>
>> >> >>     ip v     NB. Louis
>> >> >>
>> >> >> _2 _5 _11 13 13 13 12
>> >> >>
>> >> >>
>> >> >> These two verbs need to be somewhere in the "Numbers" section of the
>> >> >> J
>> >> >> Phrases doc. Maybe under "8A-Numbers & Counting", or
>> >> >> 8C-Representations",
>> >> >> or "8D-Arithmetic". How do we get them in there? Can I edit the
>> >> >> Phrases
>> >> >> doc?
>> >> >>
>> >> >>
>> >> >> Skip
>> >> >>
>> >> >>
>> >> >>
>> >> >> Skip Cave
>> >> >> Cave Consulting LLC
>> >> >>
>> >> >> On Sun, Aug 6, 2017 at 11:22 AM, Louis de Forcrand
>> >> >> <ol...@bluewin.ch>
>> >> >> wrote:
>> >> >>
>> >> >> > 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/forum
>> >> >> s.htm
>> >> >> > >> ------------------------------------------------------------
>> >> >> ----------
>> >> >> > >> For information about J forums see
>> >> >> > >> http://www.jsoftware.com/forum
>> >> >> s.htm
>> >> >> > >>
>> >> >> > > ------------------------------------------------------------
>> >> >> ----------
>> >> >> > > For information about J forums see
>> >> >> > > http://www.jsoftware.com/forum
>> >> >> s.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
----------------------------------------------------------------------
For information about J forums see http://www.jsoftware.com/forums.htm
```
```
----------------------------------------------------------------------
For information about J forums see http://www.jsoftware.com/forums.htm```