@@ -37,6 +37,10 @@ class Dtype:
37
37
pass
38
38
39
39
40
+ array_significant_figures_stack = list ()
41
+ array_decimal_values_stack = list ()
42
+
43
+
40
44
# global constants
41
45
_MIN_DENOMINATOR = 1e-12
42
46
_MIN_BASE = 1e-5
@@ -359,3 +363,125 @@ class StaticContainer(ContainerBase):
359
363
360
364
if "IVY_BACKEND" in os .environ :
361
365
ivy .set_framework (os .environ ["IVY_BACKEND" ])
366
+
367
+ # Array Significant Figures #
368
+
369
+
370
+ def _assert_array_significant_figures_formatting (sig_figs ):
371
+ assert isinstance (sig_figs , int )
372
+ assert sig_figs > 0
373
+
374
+
375
+ def _sf (x , sig_fig = 3 ):
376
+ if isinstance (x , np .bool_ ):
377
+ return x
378
+ f = float (np .format_float_positional (
379
+ x , precision = sig_fig , unique = False , fractional = False , trim = 'k'
380
+ ))
381
+ if np .issubdtype (type (x ), np .uint ) :
382
+ f = np .uint (f )
383
+ if np .issubdtype (type (x ), np .int ) :
384
+ f = np .int (f )
385
+ x = f
386
+ return x
387
+
388
+
389
+ vec_sig_fig = np .vectorize (_sf )
390
+ vec_sig_fig .__name__ = 'vec_sig_fig'
391
+
392
+
393
+ def array_significant_figures (sig_figs = None ):
394
+ """Summary.
395
+
396
+ Parameters
397
+ ----------
398
+ sig_figs
399
+ optional int, number of significant figures to be shown when printing
400
+
401
+ Returns
402
+ -------
403
+ ret
404
+
405
+ """
406
+ if ivy .exists (sig_figs ):
407
+ _assert_array_significant_figures_formatting (sig_figs )
408
+ return sig_figs
409
+ global array_significant_figures_stack
410
+ if not array_significant_figures_stack :
411
+ ret = 3
412
+ else :
413
+ ret = array_significant_figures_stack [- 1 ]
414
+ return ret
415
+
416
+
417
+ def set_array_significant_figures (sig_figs ):
418
+ """Summary.
419
+
420
+ Parameters
421
+ ----------
422
+ sig_figs
423
+ optional int, number of significant figures to be shown when printing
424
+
425
+ """
426
+ _assert_array_significant_figures_formatting (sig_figs )
427
+ global array_significant_figures_stack
428
+ array_significant_figures_stack .append (sig_figs )
429
+
430
+
431
+ def unset_array_significant_figures ():
432
+ """"""
433
+ global array_significant_figures_stack
434
+ if array_significant_figures_stack :
435
+ array_significant_figures_stack .pop (- 1 )
436
+
437
+ # Decimal Values #
438
+
439
+
440
+ def _assert_array_decimal_values_formatting (dec_vals ):
441
+ assert isinstance (dec_vals , int )
442
+ assert dec_vals >= 0
443
+
444
+
445
+ def array_decimal_values (dec_vals = None ):
446
+ """Summary.
447
+
448
+ Parameters
449
+ ----------
450
+ dec_vals
451
+ optional int, number of decimal values to be shown when printing
452
+
453
+ Returns
454
+ -------
455
+ ret
456
+
457
+ """
458
+ if ivy .exists (dec_vals ):
459
+ _assert_array_decimal_values_formatting (dec_vals )
460
+ return dec_vals
461
+ global array_decimal_values_stack
462
+ if not array_decimal_values_stack :
463
+ ret = None
464
+ else :
465
+ ret = array_decimal_values_stack [- 1 ]
466
+ return ret
467
+
468
+
469
+ def set_array_decimal_values (dec_vals ):
470
+ """Summary.
471
+
472
+ Parameters
473
+ ----------
474
+ dec_vals
475
+ optional int, number of significant figures to be shown when printing
476
+
477
+ """
478
+ _assert_array_decimal_values_formatting (dec_vals )
479
+ global array_decimal_values_stack
480
+ array_decimal_values_stack .append (dec_vals )
481
+
482
+
483
+ def unset_array_decimal_values ():
484
+ """"""
485
+ global array_decimal_values_stack
486
+ if array_decimal_values_stack :
487
+ array_decimal_values_stack .pop (- 1 )
0 commit comments