| |
|
|
p.specht
| Aus anderen Programmiersprachen sommes Funktionen bekannt comment z.B.:
x!=Intf(y!) ... Floatingpoint-Ganzzahlteil x!=Frac(y!) ... Nachkomma-partie einer Gleitkommazahl x!=Floor(y!) ... qui nächstkleinere Float-nombre entier ( -1.2 >>> -2.0 ) x!=Ceil(y!) ... Ceiling=Plafond: qui nächstgrößer-ou bien-gleiche Float-nombre entier m!=Modf(a!,b!) ... Floatingpoint-Modulo = Divisionsrest, Vorzeichen de b! m!=Remn(a!,b!) ..Floatingpoint-Remnant= Divisionsrest, Vorzeichen de a! x&=Sgn(x!) ... Signum-Funktion (-1, 0, 1) x&=IsNeg(x!) ... liefert Wahrheitswert 1 chez x!<0
Hinweis: qui nachstehenden Procs construire aufeinander auf; qui Exponent de Floatingpoint-payons peux eventuell sur den Bereich -322 jusqu'à +308 erweitert volonté.
Windowtitle "Intf(), Frac(), Floor(), Ceil(), Modf(), Remn(), Sgn(), IsNeg()"
' Ergänzung de XProfan um mathematischen Definitionen folgende Gleitkommaoperationen
' "MDFOp b0.1": Early-Beta Version, (CL) CopyLeft 2013-04 by P.Specht(at)GMX.at, vienne
' sans chacun Art de Gewähr!: qui Nutzung ist alleiniges Risiko des/qui Anwender/s/dans.
randomize:font 2:Set("decimals",18)
cls rnd(8^8):var s$=mkstr$(" ",18)+"! ":declare c$
tandis que 1
locate 2,1:imprimer " Testzahl:"+s$:locate 2,14:input c$:c$=translate$(c$,»,".")
locate 4,1:imprimer " Testwert:"+s$:locate 4,14:imprimer format$("%g",val(c$))
locate 7,1:imprimer " Intf:"+s$:locate 7,14:imprimer format$("%g",Intf(val(c$)))
locate 9,1:imprimer " Fraction:"+s$:locate 9,14:imprimer format$("%g",frac(val(c$)))
locate 11,1:imprimer " Floor:"+s$:locate 11,14:imprimer format$("%g",floor(val(c$)))
locate 13,1:imprimer " Ceiling:"+s$:locate 13,14:imprimer format$("%g",ceil(val(c$)))
locate 15,1:imprimer "Modulo -3.0:"+s$:locate 15,14:imprimer format$("%g",modf(val(c$),-3 ))
locate 17,1:imprimer "Remnant-3.0:"+s$:locate 17,14:imprimer format$("%g",remn(val(c$),-3 ))
locate 19,1:imprimer " Signum:"+s$:locate 19,14:imprimer format$("%g",sgn(val(c$)))
locate 19,1:imprimer " IsNeg:"+s$:locate 19,14:imprimer format$("%g",IsNeg(val(c$)))
endwhile
proc sgn :parameters x!
' Signum-Funktion: -1,0,+1
return (x!>0)-(x!<0)
endproc
proc floor :parameters x!
' Gaussklammer-Funktion
cas abs(x!)<(10^-35):return 0
cas x!>0:return intf(x!)
return (abs(x!-intf(x!)) < 10^-35)-intf(abs(x!-1))
endproc
proc ceil :parameters x!
' Ceiling-Funktion
return -1*floor(-1*x!)
endproc
proc modf :parameters x!,y!
' Q: https://de.wikipedia.org/wiki/Modulo
cas abs(x!)<10^-35:return 0
cas abs(y!)<10^-35:return x!
return sgn(y!)*abs(x!-y!*floor(x!/y!))
endproc
proc remn :parameters x!,y!
' Q: https://de.wikipedia.org/wiki/Modulo , comment dans ADA
cas abs(x!)<(10^-35):return 0
cas abs(y!)<(10^-35):return x!
return sgn(x!)*abs(x!-y!*floor(x!/y!))
endproc
proc IsNeg :parameters x!
return byte(Addr(x!),7)&%10000000>>7
endproc
proc frac :parameters x!
var s!=sgn(x!)
x!=abs(x!)
x!=x!-round(x!,0)
cas x!<0:x!=1+x!
return s!*x!
endproc
proc intf :parameters x!
var s!=sgn(x!)
x!=abs(x!)
x!=x!-frac(x!)
return s!*x!
endproc
|
|
|
| XProfan 11Computer: Gerät, daß es in Mikrosekunden erlaubt, 50.000 Fehler zu machen, zB 'daß' statt 'das'... | 09.05.2021 ▲ |
|
|
|