Lines Matching +full:x +full:- +full:-
4 * SPDX-License-Identifier: BSD-2-Clause
6 * Copyright (c) 2018-2025 Gavin D. Howard and contributors.
36 define p(x,y){
39 if(x==0){
44 if(y==a)return(x^a)@scale
46 if(x<1){
47 y=-y
48 a=-a
49 z=x
50 x=1/x
53 return e(y*l(x))
55 i=x^a
59 x=1/z
60 i=x^a
62 i*=e((y-a)*l(x))
66 define r(x,p){
68 if(x==0)return x
70 n=(x<0)
71 x=abs(x)
72 t=x@p
73 if(p<scale(x)&&x-t>=5>>p+1)t+=1>>p
74 if(n)t=-t
77 define ceil(x,p){
79 if(x==0)return x
81 n=(x<0)
82 x=abs(x)
83 t=(x+((x@p<x)>>p))@p
84 if(n)t=-t
90 for(r=1;n>1;--n)r*=n
107 g=f(n-k)
123 g=f(n-r)
140 define log(x,b){
144 if(scale(x)>scale)scale=scale(x)
146 p=l(x)/l(b)
150 define l2(x){return log(x,2)}
151 define l10(x){return log(x,A)}
152 define root(x,n){
156 if(n==0)x/n
157 if(x==0||n==1)return x
158 if(n==2)return sqrt(x)
161 if(x<0&&n%2==0){
163 sqrt(x)
165 scale=s+scale(x)+5
167 m=(x<0)
168 x=abs(x)
169 p=n-1
170 q=A^ceil((length(x$)/n)$,0)
173 q=(p*r+x/r^p)/n
175 if(m)r=-r
179 define cbrt(x){return root(x,3)}
221 define t(x){
225 s=s(x)
226 c=c(x)
227 scale-=2
230 define a2(y,x){
232 if(!x&&!y)y/x
233 if(x<=0){
235 if(y<0)p=-p
237 if(x==0)a=p/2
240 a=a(y/x)+p
241 scale-=2
245 define sin(x){return s(x)}
246 define cos(x){return c(x)}
247 define atan(x){return a(x)}
248 define tan(x){return t(x)}
249 define atan2(y,x){return a2(y,x)}
250 define r2d(x){
256 r=x*180/pi(scale)
261 define d2r(x){
267 r=x*pi(scale)/180
278 auto n,x
283 x=max(a,b)
284 return irand(x-n+1)+n
286 define srand(x){
287 if(irand(2))return -x
288 return x
291 define void output(x,b){
295 x
298 define void hex(x){output(x,G)}
299 define void binary(x){output(x,2)}
300 define ubytes(x){
302 x=abs(x)$
304 for(p=1;i-1<x;p*=2){i*=i}
307 define sbytes(x){
309 z=(x<0)
310 x=abs(x)$
311 n=ubytes(x)
312 p=2^(n*8-1)
313 if(x>p||(!z&&x==p))n*=2
316 define s2un(x,n){
318 x=x$
319 if(x<0){
320 x=abs(x)
324 u=2^(t-1)
325 if(x==u)return x
326 else if(x>u)x%=u
328 return 2^(t)-x
330 return x
332 define s2u(x){return s2un(x,sbytes(x))}
333 define void plz(x){
334 if(leading_zero())print x
336 if(x>-1&&x<1&&x!=0){
337 if(x<0)print"-"
338 print 0,abs(x)
340 else print x
343 define void plznl(x){
344 plz(x)
347 define void pnlz(x){
350 if(x>-1&&x<1&&x!=0){
351 s=scale(x)
352 if(x<0)print"-"
354 x=abs(x)
356 x<<=1
357 print x$
358 x-=x$
363 print x
365 define void pnlznl(x){
366 pnlz(x)
369 define void output_byte(x,i){
373 x=abs(x)$
374 b=x/(2^(i*8))
380 for(i=y-p;i>0;--i)print 0
384 define void output_uint(x,n){
386 for(i=n-1;i>=0;--i){
387 output_byte(x,i)
392 define void hex_uint(x,n){
396 output_uint(x,n)
399 define void binary_uint(x,n){
403 output_uint(x,n)
406 define void uintn(x,n){
407 if(scale(x)){
408 print"Error: ",x," is not an integer.\n"
411 if(x<0){
412 print"Error: ",x," is negative.\n"
415 if(x>=2^(n*8)){
416 print"Error: ",x," cannot fit into ",n," unsigned byte(s).\n"
419 binary_uint(x,n)
420 hex_uint(x,n)
422 define void intn(x,n){
424 if(scale(x)){
425 print"Error: ",x," is not an integer.\n"
428 t=2^(n*8-1)
429 if(abs(x)>=t&&(x>0||x!=-t)){
430 print "Error: ",x," cannot fit into ",n," signed byte(s).\n"
433 x=s2un(x,n)
434 binary_uint(x,n)
435 hex_uint(x,n)
437 define void uint8(x){uintn(x,1)}
438 define void int8(x){intn(x,1)}
439 define void uint16(x){uintn(x,2)}
440 define void int16(x){intn(x,2)}
441 define void uint32(x){uintn(x,4)}
442 define void int32(x){intn(x,4)}
443 define void uint64(x){uintn(x,8)}
444 define void int64(x){intn(x,8)}
445 define void uint(x){uintn(x,ubytes(x))}
446 define void int(x){intn(x,sbytes(x))}
503 define bnotn(x,n){
508 x=abs(x)$%r+r
511 while(x!=1){
512 x=divmod(x,2,m[])
519 define bnot8(x){return bnotn(x,1)}
520 define bnot16(x){return bnotn(x,2)}
521 define bnot32(x){return bnotn(x,4)}
522 define bnot64(x){return bnotn(x,8)}
523 define bnot(x){return bnotn(x,ubytes(x))}
524 define brevn(x,n){
529 x=abs(x)$%a+a
531 while(x!=1){
532 x=divmod(x,2,m[])
539 define brev8(x){return brevn(x,1)}
540 define brev16(x){return brevn(x,2)}
541 define brev32(x){return brevn(x,4)}
542 define brev64(x){return brevn(x,8)}
543 define brev(x){return brevn(x,ubytes(x))}
544 define broln(x,p,n){
551 x=abs(x)$%t
552 if(!p)return x
553 x=divmod(x,2^(n-p),m[])
554 x+=m[0]*2^p%t
556 return x
558 define brol8(x,p){return broln(x,p,1)}
559 define brol16(x,p){return broln(x,p,2)}
560 define brol32(x,p){return broln(x,p,4)}
561 define brol64(x,p){return broln(x,p,8)}
562 define brol(x,p){return broln(x,p,ubytes(x))}
563 define brorn(x,p,n){
570 x=abs(x)$%t
571 if(!p)return x
572 x=divmod(x,2^p,m[])
573 x+=m[0]*2^(n-p)%t
575 return x
577 define bror8(x,p){return brorn(x,p,1)}
578 define bror16(x,p){return brorn(x,p,2)}
579 define bror32(x,p){return brorn(x,p,4)}
580 define bror64(x,p){return brorn(x,p,8)}
581 define brol(x,p){return brorn(x,p,ubytes(x))}
582 define bmodn(x,n){
586 x=abs(x)$%2^(abs(n)$*8)
588 return x
590 define bmod8(x){return bmodn(x,1)}
591 define bmod16(x){return bmodn(x,2)}
592 define bmod32(x){return bmodn(x,4)}
593 define bmod64(x){return bmodn(x,8)}