Re: [Flashforth-devel] Floating point library - open issues
Brought to you by:
oh2aun
|
From: om1zz <om...@vo...> - 2015-06-01 22:39:43
|
Mike, also I use ?? for error recognition
QABORTQ:
rcall XSQUOTE
.byte 2
;.byte '\?',7,7
.ascii "??"
.align 2
bra QABORT
I.
______________________________________________________________
> Od: "om1zz" <om...@vo...>
> Komu: <fla...@li...>
> Datum: 01.06.2015 23:05
> Předmět: Re: [Flashforth-devel] Floating point library - open issues
>
>Issue 4.
>
>Mike,
>it crashes here with latest trunk's OS, and 24config (except the uart pins def and 115k2) and
>
>; UART buffer sizes
>; Valid sizes are 7, 15, 31, 63, 127, 255, 511, 1023, etc.
>.equ TX1_BUF_SIZE, 31 ; Use 0 for unbuffered TX.
>.equ RX1_BUF_SIZE, 127
>.equ RX1_OFF_FILL, 32 ; Fill level for XOFF
>
>;;; USER AREA sizes for the OPERATOR task
>.equ RETURN_STACK_SIZE, 96 ; 96=48 cells return stack
>.equ PARAMETER_STACK_SIZE, 96 ; 96=48 cells parameter stack
>.equ TIB_SIZE, 128 ; 74 chars tib size
>.equ HOLD_SIZE, 10 ; 10 chars hold area
>
>Look at this:
>
>I ripped off the part were it crashes (2nd loop around pow), and I did following:
>
>: test
>for
>fpi f-pi fpow fs. ." shall be 0.0274256931 " cr
>f-pi 33 s>f fpow fs. ." shall be -25465124213045828.470 " cr
>f-pi -33 s>f fpow fs. ." shall be -3.92693941578e-17 " cr
>next
>; ok<#,ram>
>
>First manual calculation:
>
>fpi f-pi fpow fs. 2.74257e-2 ok<#,ram>
>f-pi 33 s>f fpow fs. -2.54651e16 ok<#,ram>
>f-pi -33 s>f fpow fs. -3.92695e-17 ok<#,ram>
>
>Good results.
>
>Then the loop:
>
>2 test 2.74257e-2 shall be 0.0274256931
>-1.11997e29 shall be -25465124213045828.470
>-9.40317e35 shall be -3.92693941578e-17
>5.69610e32 shall be 0.0274256931
>-1.11997e29 shall be -25465124213045828.470
>-9.40317e35 shall be -3.92693941578e-17
> ok<#,ram>
>
>Wrong results.
>
>Then I've done without strings:
>
>: test2
>for
>fpi f-pi fpow fs. cr
>f-pi 33 s>f fpow fs. cr
>f-pi -33 s>f fpow fs. cr
>next
>; ok<#,ram>
>3 test2 2.74257e-2 OS FlashForth PIC24 31.05.2015
>ESC
>
>And finally I deleted cr:
>
>: test3
>for
>fpi f-pi fpow fs.
>f-pi 33 s>f fpow fs.
>f-pi -33 s>f fpow fs.
>next
>; ok<#,ram>
>3 test3 2.74257e-2 -2.54651e16 -3.92695e-17 2.74257e-2 -2.54651e16 -3.92695e-17 2.74257e-2 -2.54651e16 -3.92695e-17
>ok<#,ram>
>
>Good results even with 1000 test3 .
>
>When I deleted above cr in the bigtest (only the 3 one), it crashes somewhere else.
>Igor
>
>______________________________________________________________
>> Od: Mikael Nordman <mik...@fl...>
>> Komu: <fla...@li...>
>> Datum: 01.06.2015 19:54
>> Předmět: Re: [Flashforth-devel] Floating point library - open issues
>>
>>I have no problem running your tests with FOR NEXT.
>>DO LOOP uses a two words more stack.
>>After running 256 loops there are no crashes.
>>You can see there are 3 words (1111) unused
>>on the return stack(96 byte ).
>>Adding some extra interrupt routines and DO LOOP will overflow the stack
>>and crash the system.
>>
>> ok<$,ram>
>>hex r0 @ operator 3 + c@ dump
>>0f9c :f6 29 00 00 14 28 00 00 05 00 06 00 38 2f 00 00 .)...(......J/..
>>0fac :80 25 00 00 66 18 00 00 00 00 4a 19 00 00 6e 18 .%..n.....J...v.
>>0fbc :00 00 00 00 00 00 06 00 30 00 00 00 dc 08 00 00 ........0.......
>>0fcc :02 07 00 00 83 00 20 39 00 00 00 00 02 07 00 00 ...... 9........
>>0fdc :83 00 96 00 7f 00 00 00 c0 7a 48 03 00 00 02 07 .........zH.....
>>0fec :00 00 7f 07 00 00 7e 00 00 00 11 11 11 11 11 11 ......~.........
>>ok<$,ram>
>>
>>
>>On 01.06.2015 12:32, om1zz wrote:
>>> 4. Stack(s) issue?
>>>
>>> When running following test (math functions calculations in a simple loop):
>>>
>>> https://github.com/igor-m/EXPERIMENTAL_ZZ/blob/master/examples/Big%20Torture%20Test%20NO%20NANS%20and%20BIG%20_POS_NEG.txt
>>>
>>> it locks (with "rtc time" clock running or not (inerrupt not init), with do-loop or for-next loop as the main test loop).
>>>
>>> With default settings:
>>> data stack = 96
>>> return stack = 96
>>> min XC16 stack = 128
>>> with dspic33 and pic24 chips, FF - 17.5.2015,
>>> @27MHz
>>>
>>> it usually locks near the end of the first loop.
>>>
>>> With settings like:
>>>
>>> data stack = 180
>>> return stack = 180
>>> min XC16 stack = 128
>>> with dspic33 and pic24 chips, with FF - 17.5.2015,
>>> @27MHz
>>>
>>> it locks after a longer time and ~dozens/hundreds of loops,
>>>
>>> With
>>>
>>> data stack = 254
>>> return stack = 254
>>> min XC16 stack = 128
>>> with dspic33 and pic24 chips, with FF - 17.5.2015,
>>> @27MHz
>>>
>>> it passes the test (it runs for about 8 minutes).
>>>
>>> With default 96 settings it restarts with OS after the crash, with 180 settings with W.
>>>
>>> When doing the specific calculations (at which it crashes) from the prompt, I get correct results and I see no issues.
>>> I think it should work with the 96 default, as the calculation within the test are single line, simple primitive
>>> calculations without any loops, nestings or recursions.
>>> It seems there is a subtile issue somewhere, I cannot find the cause however.
>>>
>>> Igor
>>>
>>>
>>>
>>> ______________________________________________________________
>>>> Od: "om1zz" <om...@vo...>
>>>> Komu: "flashforth-devel" <fla...@li...>
>>>> Datum: 30.05.2015 10:53
>>>> Předmět: Floating point library - open issues
>>>>
>>>> Hi,
>>>> as discussed with Mike before, there are few open issues with floating point library, which are not critical, but needs some tweaking to be perfect, however.
>>>>
>>>> 1. handling largest positive and largest negative number, it crashes now.
>>>> 2. printing NaN, crashes
>>>> 3. "e" for exponent
>>>>
>>>> 1.
>>>>
>>>> 0x7f7fffff == 3.402823466385288598E38
>>>> 0xff7fffff == -3.402823466385288598E38
>>>>
>>>> does
>>>>
>>>> $ffff $7f7f fs. - crash
>>>> $ff7f $ffff fs. - crash
>>>>
>>>> 2.
>>>>
>>>> -1.0e3 flog fs. crash
>>>> -1.0e3 fsqrt fs. crash
>>>> $ffff $7fff fs. crash
>>>> $ffff $ffff fs. crash
>>>>
>>>> Those calcs shall print something like "NaN"
>>>>
>>>> The bove issues come from following - the floating point library was written for amorth, and the math written in asm returned specific agreed values for those results. XC16 returns different values in FF.
>>>>
>>>> 3.
>>>>
>>>> Mainly an issue with 0e 3e 123e as it could be recognised as HEX value when in hex. "E" may solve the problem, when agreed so.
>>>>
>>>> Igor
>>>>
>>>
>>> ------------------------------------------------------------------------------
>>> _______________________________________________
>>> Flashforth-devel mailing list
>>> Fla...@li...
>>> https://lists.sourceforge.net/lists/listinfo/flashforth-devel
>>>
>>
>>------------------------------------------------------------------------------
>>_______________________________________________
>>Flashforth-devel mailing list
>>Fla...@li...
>>https://lists.sourceforge.net/lists/listinfo/flashforth-devel
>>
>
|