better bug fix
This commit is contained in:
parent
3993dbc80a
commit
2392745f6f
14
fix16.tal
14
fix16.tal
|
@ -342,17 +342,21 @@
|
||||||
&done ( x* s1* [c* 2*] )
|
&done ( x* s1* [c* 2*] )
|
||||||
POP2r POP2r NIP2 JMP2r ( s1* )
|
POP2r POP2r NIP2 JMP2r ( s1* )
|
||||||
|
|
||||||
|
@x16-unit-circle ( x* -> x'* )
|
||||||
|
x16-pi*2 STH2 ( x [2pi] )
|
||||||
|
DUP2 STH2kr x16-quotient ( x x/2pi [2pi] )
|
||||||
|
DUP2 #1400 DIV2 STH2 SWP2r ( x x/2pi [adj* 2pi*] )
|
||||||
|
STH2r x16-mul STH2r ADD2 SUB2 ( x' ; 0 <= x' < 2pi )
|
||||||
|
JMP2r
|
||||||
|
|
||||||
@x16-cos ( x* -> cos[x]* )
|
@x16-cos ( x* -> cos[x]* )
|
||||||
x16-pi/2 ADD2
|
x16-unit-circle x16-pi/2 ADD2 ( fall-through )
|
||||||
|
|
||||||
@x16-sin ( x* -> sin[x]* )
|
@x16-sin ( x* -> sin[x]* )
|
||||||
DUP2 #8000 LTH2 ?&non-negative
|
DUP2 #8000 LTH2 ?&non-negative
|
||||||
x16-negate x16-sin/non-negative !x16-negate
|
x16-negate x16-sin/non-negative !x16-negate
|
||||||
&non-negative
|
&non-negative
|
||||||
x16-pi*2 STH2 ( x [2pi] )
|
x16-unit-circle
|
||||||
DUP2 STH2kr x16-quotient ( x x/2pi [2pi] )
|
|
||||||
DUP2 #1400 DIV2 STH2 SWP2r ( x x/2pi [adj* 2pi*] )
|
|
||||||
STH2r x16-mul STH2r ADD2 SUB2 ( x' ; 0 <= x' < 2pi )
|
|
||||||
DUP2 x16-3pi/2 LTH2 ?&c1
|
DUP2 x16-3pi/2 LTH2 ?&c1
|
||||||
( -sin(2pi - x) ) x16-pi*2 SWP2 SUB2 x16-sin-q !x16-negate
|
( -sin(2pi - x) ) x16-pi*2 SWP2 SUB2 x16-sin-q !x16-negate
|
||||||
&c1 DUP2 x16-pi LTH2 ?&c2
|
&c1 DUP2 x16-pi LTH2 ?&c2
|
||||||
|
|
|
@ -4,7 +4,7 @@ from math import ceil, copysign, cos, floor, log, sin, sqrt, tan
|
||||||
from os import environ
|
from os import environ
|
||||||
from random import randint
|
from random import randint
|
||||||
from subprocess import Popen, PIPE, run
|
from subprocess import Popen, PIPE, run
|
||||||
from sys import argv
|
from sys import argv, exit
|
||||||
|
|
||||||
def tosigned(x):
|
def tosigned(x):
|
||||||
return x if x < 32768 else x - 65536
|
return x if x < 32768 else x - 65536
|
||||||
|
@ -173,7 +173,10 @@ def x16_trunc8(x):
|
||||||
|
|
||||||
def main():
|
def main():
|
||||||
trials = int(argv[1]) if argv[1:] else 100
|
trials = int(argv[1]) if argv[1:] else 100
|
||||||
run(['uxnasm', 'test-fix16.tal', 'run.rom'])
|
e = run(['uxnasm', 'test-fix16.tal', 'run.rom'])
|
||||||
|
if e.returncode != 0:
|
||||||
|
print('the command `uxnasm test-fix16.tal run.rom` failed!')
|
||||||
|
exit(e.returncode)
|
||||||
p = pipe()
|
p = pipe()
|
||||||
test(p, trials, b'+', [('x', u16), ('y', u16)], u16, x16_add)
|
test(p, trials, b'+', [('x', u16), ('y', u16)], u16, x16_add)
|
||||||
test(p, trials, b'-', [('x', u16), ('y', u16)], u16, x16_sub)
|
test(p, trials, b'-', [('x', u16), ('y', u16)], u16, x16_sub)
|
||||||
|
|
Loading…
Reference in New Issue