mirror of
https://github.com/ilyakooo0/urbit.git
synced 2024-09-21 15:38:59 +03:00
Dragon4 hoon fix
This commit is contained in:
parent
7dc270f89f
commit
d42e7283d4
@ -2006,13 +2006,10 @@
|
|||||||
::
|
::
|
||||||
=+ m=(met 0 a.a)
|
=+ m=(met 0 a.a)
|
||||||
?> |(s (gth m prc)) :: require precision
|
?> |(s (gth m prc)) :: require precision
|
||||||
=+ ^= q
|
=+ ^= q %+ max
|
||||||
=+ ^= f :: reduce precision
|
?: (gth m prc) (^sub m prc) 0 :: reduce precision
|
||||||
?: (gth m prc) (^sub m prc) 0
|
%- abs:si ?: =(den %i) --0 :: enforce min. prec
|
||||||
=+ ^= g %- abs:si :: enforce min. exp
|
|
||||||
?: =(den %i) --0
|
|
||||||
?: =((cmp:si e.a emn) -1) (dif:si emn e.a) --0
|
?: =((cmp:si e.a emn) -1) (dif:si emn e.a) --0
|
||||||
(max f g)
|
|
||||||
=^ b a :- (end 0 q a.a)
|
=^ b a :- (end 0 q a.a)
|
||||||
a(e (sum:si e.a (sun:si q)), a (rsh 0 q a.a))
|
a(e (sum:si e.a (sun:si q)), a (rsh 0 q a.a))
|
||||||
::
|
::
|
||||||
@ -2063,40 +2060,53 @@
|
|||||||
?: =(den %i) [%f & a]
|
?: =(den %i) [%f & a]
|
||||||
?: =((cmp:si emx e.a) -1) [%i &] [%f & a] :: enforce max. exp
|
?: =((cmp:si emx e.a) -1) [%i &] [%f & a] :: enforce max. exp
|
||||||
::
|
::
|
||||||
++ drg :: dragon4;
|
++ drg :: dragon4; get
|
||||||
~/ %drg :: convert to decimal
|
~/ %drg :: printable decimal;
|
||||||
|= {a/{e/@s a/@u}} ^- {@s @u}
|
|= {a/{e/@s a/@u}} ^- {@s @u} :: guaranteed accurate
|
||||||
?< =(a.a 0)
|
?< =(a.a 0) :: for rounded floats
|
||||||
=. a (xpd a)
|
=. a (xpd a)
|
||||||
=+ r=(lsh 0 ?:((syn:si e.a) (abs:si e.a) 0) a.a)
|
=+ r=(lsh 0 ?:((syn:si e.a) (abs:si e.a) 0) a.a)
|
||||||
=+ s=(lsh 0 ?.((syn:si e.a) (abs:si e.a) 0) 1)
|
=+ s=(lsh 0 ?.((syn:si e.a) (abs:si e.a) 0) 1)
|
||||||
=+ m=(lsh 0 ?:((syn:si e.a) (abs:si e.a) 0) 1)
|
=+ mn=(lsh 0 ?:((syn:si e.a) (abs:si e.a) 0) 1)
|
||||||
|
=+ mp=mn
|
||||||
|
=> ?.
|
||||||
|
?& =(a.a (bex (dec prc))) :: if next smallest
|
||||||
|
|(!=(e.a emn) =(den %i)) :: float is half ULP,
|
||||||
|
== :: tighten lower bound
|
||||||
|
.
|
||||||
|
%= .
|
||||||
|
mp (lsh 0 1 mp)
|
||||||
|
r (lsh 0 1 r)
|
||||||
|
s (lsh 0 1 s)
|
||||||
|
==
|
||||||
=+ [k=--0 q=(^div (^add s 9) 10)]
|
=+ [k=--0 q=(^div (^add s 9) 10)]
|
||||||
|- ?: (^lth r q)
|
|- ?: (^lth r q)
|
||||||
%= $
|
%= $
|
||||||
k (dif:si k --1)
|
k (dif:si k --1)
|
||||||
r (^mul r 10)
|
r (^mul r 10)
|
||||||
m (^mul m 10)
|
mn (^mul mn 10)
|
||||||
|
mp (^mul mp 10)
|
||||||
==
|
==
|
||||||
|- ?: (gte (^add (^mul r 2) m) (^mul s 2))
|
|- ?: (gte (^add (^mul r 2) mp) (^mul s 2))
|
||||||
$(s (^mul s 10), k (sum:si k --1))
|
$(s (^mul s 10), k (sum:si k --1))
|
||||||
=+ [u=0 o=0]
|
=+ [u=0 o=0]
|
||||||
|-
|
|- :: r/s+o = a*10^-k
|
||||||
=+ v=(dvr (^mul r 10) s)
|
=+ v=(dvr (^mul r 10) s)
|
||||||
=> %= .
|
=> %= .
|
||||||
k (dif:si k --1)
|
k (dif:si k --1)
|
||||||
u p.v
|
u p.v
|
||||||
r q.v
|
r q.v
|
||||||
m (^mul m 10)
|
mn (^mul mn 10)
|
||||||
|
mp (^mul mp 10)
|
||||||
==
|
==
|
||||||
=+ l=(^lth (^mul r 2) m)
|
=+ l=(^lth (^mul r 2) mn) :: in lower bound
|
||||||
=+ ^= h
|
=+ ^= h :: in upper bound
|
||||||
?| (^lth (^mul s 2) m)
|
?| (^lth (^mul s 2) mp)
|
||||||
(gth (^mul r 2) (^sub (^mul s 2) m))
|
(gth (^mul r 2) (^sub (^mul s 2) mp))
|
||||||
==
|
==
|
||||||
?: &(!l !h)
|
?: &(!l !h)
|
||||||
$(o (^add (^mul o 10) u))
|
$(o (^add (^mul o 10) u))
|
||||||
=+ q=&(h |(!l (gte (^mul r 2) s)))
|
=+ q=&(h |(!l (gth (^mul r 2) s)))
|
||||||
=. o (^add (^mul o 10) ?:(q +(u) u))
|
=. o (^add (^mul o 10) ?:(q +(u) u))
|
||||||
[k o]
|
[k o]
|
||||||
::
|
::
|
||||||
|
Loading…
Reference in New Issue
Block a user