File Coverage

blib/lib/Hydrogen/Number.pm
Criterion Covered Total %
statement 243 303 80.2
branch 54 162 33.3
condition 22 96 22.9
subroutine 50 57 87.7
pod 17 17 100.0
total 386 635 60.7


line stmt bran cond sub pod time code
1             # This file was autogenerated.
2 4     4   221908 use 5.008001;
  4         12  
3 4     4   20 use strict;
  4         13  
  4         89  
4 4     4   27 use warnings;
  4         7  
  4         205  
5 4     4   16 no warnings qw( void once );
  4         8  
  4         171  
6 4     4   512 use Hydrogen ();
  4         9  
  4         316  
7              
8             package Hydrogen::Number;
9              
10             our $AUTHORITY = 'cpan:TOBYINK';
11             our $VERSION = '0.021001';
12              
13             =head1 NAME
14              
15             Hydrogen::Number - a standard library for numbers
16              
17             =head1 VERSION
18              
19             This documentation is for Hydrogen::Number 0.021001,
20             which is based on Sub::HandlesVia::HandlerLibrary::Number 0.050005.
21              
22             =cut
23              
24             =head1 FUNCTIONS
25              
26             Each function expects a numeric scalar as its first argument.
27              
28             =cut
29              
30 4         32 use Exporter::Shiny qw(
31             abs
32             add
33             ceil
34             cmp
35             div
36             eq
37             floor
38             ge
39             get
40             gt
41             le
42             lt
43             mod
44             mul
45             ne
46             set
47             sub
48 4     4   20 );
  4         12  
49              
50             =head2 C<< abs( $number ) >>
51              
52             Finds the absolute value of the current number, updating the original value.
53              
54             =cut
55              
56             sub abs {
57 1     1 1 330149 my $__REF__ = \$_[0];
58              
59             package Hydrogen::Number::__SANDBOX__;
60 1 50       8 @_ == 1
61             or Hydrogen::croak( "Wrong number of parameters for abs; usage: "
62             . "Hydrogen::Number::abs( \$number )" );
63 1         3 1;
64 1         3 ( ${$__REF__} = abs($$__REF__) );
  1         4  
65             }
66              
67             =head2 C<< add( $number, $addend ) >>
68              
69             Additional arguments: B<< Num >>.
70              
71             Adds a number to the existing number, updating the original value.
72              
73             =cut
74              
75             sub add {
76 2     2 1 345310 my $__REF__ = \$_[0];
77              
78             package Hydrogen::Number::__SANDBOX__;
79 2         7 @_ = do {
80 2         8 my ( %tmp, $tmp );
81              
82 2 50       11 @_ == 2
83             or Hydrogen::croak(
84             "Wrong number of parameters in signature for %s: got %d, %s",
85             "add", scalar(@_), "expected exactly 2 parameters" );
86              
87             # Parameter $_[0] (type: Num)
88             (
89 2 50       6 do {
90              
91             package Hydrogen::Number::__SANDBOX__;
92 4     4   1049 use Scalar::Util ();
  4         8  
  4         357  
93 2 50 33     39 defined( $_[0] )
94             && !ref( $_[0] )
95             && Scalar::Util::looks_like_number( $_[0] );
96             }
97             )
98             or Hydrogen::croak(
99             "Type check failed in signature for add: %s should be %s",
100             "\$_[0]", "Num" );
101              
102             # Parameter $_[1] (type: Num)
103             (
104 2 50       7 do {
105              
106             package Hydrogen::Number::__SANDBOX__;
107 4     4   20 use Scalar::Util ();
  4         7  
  4         478  
108 2 50 33     26 defined( $_[1] )
109             && !ref( $_[1] )
110             && Scalar::Util::looks_like_number( $_[1] );
111             }
112             )
113             or Hydrogen::croak(
114             "Type check failed in signature for add: %s should be %s",
115             "\$_[1]", "Num" );
116              
117 2         9 (@_);
118             };
119             (
120 2         5 ${$__REF__} = do {
  2         23  
121 2         7 my $shv_final_unchecked = $$__REF__ + $_[1];
122 2         6 do {
123             (
124 2 50       4 do {
125              
126             package Hydrogen::Number::__SANDBOX__;
127 4     4   22 use Scalar::Util ();
  4         7  
  4         618  
128 2 50 33     39 defined($shv_final_unchecked)
129             && !ref($shv_final_unchecked)
130             && Scalar::Util::looks_like_number(
131             $shv_final_unchecked);
132             }
133             )
134             or Hydrogen::croak(
135             "Type check failed for add: expected %s, got value %s",
136             "Num", $shv_final_unchecked );
137 2         8 $shv_final_unchecked;
138             };
139             }
140             );
141             }
142              
143             =head2 C<< ceil( $number ) >>
144              
145             Finds the ceiling of the current number, updating the original value. Like C from L, but in-place.
146              
147             =cut
148              
149             sub ceil {
150 0     0 1 0 my $__REF__ = \$_[0];
151              
152             package Hydrogen::Number::__SANDBOX__;
153 0 0       0 @_ == 1
154             or Hydrogen::croak( "Wrong number of parameters for ceil; usage: "
155             . "Hydrogen::Number::ceil( \$number )" );
156 0         0 1;
157 4     4   2144 use POSIX ();
  4         29102  
  4         534  
158 0         0 ( ${$__REF__} = POSIX::ceil($$__REF__) );
  0         0  
159             }
160              
161             =head2 C<< cmp( $number, $num ) >>
162              
163             Additional arguments: B<< Num >>.
164              
165             Returns C<< $number <=> $num >>.
166              
167             =cut
168              
169             sub cmp {
170 0     0 1 0 my $__REF__ = \$_[0];
171              
172             package Hydrogen::Number::__SANDBOX__;
173 0         0 @_ = do {
174 0         0 my ( %tmp, $tmp );
175              
176 0 0       0 @_ == 2
177             or Hydrogen::croak(
178             "Wrong number of parameters in signature for %s: got %d, %s",
179             "cmp", scalar(@_), "expected exactly 2 parameters" );
180              
181             # Parameter $_[0] (type: Num)
182             (
183 0 0       0 do {
184              
185             package Hydrogen::Number::__SANDBOX__;
186 4     4   30 use Scalar::Util ();
  4         6  
  4         307  
187 0 0 0     0 defined( $_[0] )
188             && !ref( $_[0] )
189             && Scalar::Util::looks_like_number( $_[0] );
190             }
191             )
192             or Hydrogen::croak(
193             "Type check failed in signature for cmp: %s should be %s",
194             "\$_[0]", "Num" );
195              
196             # Parameter $_[1] (type: Num)
197             (
198 0 0       0 do {
199              
200             package Hydrogen::Number::__SANDBOX__;
201 4     4   19 use Scalar::Util ();
  4         5  
  4         682  
202 0 0 0     0 defined( $_[1] )
203             && !ref( $_[1] )
204             && Scalar::Util::looks_like_number( $_[1] );
205             }
206             )
207             or Hydrogen::croak(
208             "Type check failed in signature for cmp: %s should be %s",
209             "\$_[1]", "Num" );
210              
211 0         0 (@_);
212             };
213 0         0 $$__REF__ <=> $_[1];
214             }
215              
216             =head2 C<< div( $number, $divisor ) >>
217              
218             Additional arguments: B<< Num >>.
219              
220             Divides the existing number by a number, updating the original value.
221              
222             =cut
223              
224             sub div {
225 1     1 1 8704 my $__REF__ = \$_[0];
226              
227             package Hydrogen::Number::__SANDBOX__;
228 1         7 @_ = do {
229 1         3 my ( %tmp, $tmp );
230              
231 1 50       7 @_ == 2
232             or Hydrogen::croak(
233             "Wrong number of parameters in signature for %s: got %d, %s",
234             "div", scalar(@_), "expected exactly 2 parameters" );
235              
236             # Parameter $_[0] (type: Num)
237             (
238 1 50       2 do {
239              
240             package Hydrogen::Number::__SANDBOX__;
241 4     4   24 use Scalar::Util ();
  4         7  
  4         280  
242 1 50 33     18 defined( $_[0] )
243             && !ref( $_[0] )
244             && Scalar::Util::looks_like_number( $_[0] );
245             }
246             )
247             or Hydrogen::croak(
248             "Type check failed in signature for div: %s should be %s",
249             "\$_[0]", "Num" );
250              
251             # Parameter $_[1] (type: Num)
252             (
253 1 50       2 do {
254              
255             package Hydrogen::Number::__SANDBOX__;
256 4     4   22 use Scalar::Util ();
  4         9  
  4         460  
257 1 50 33     34 defined( $_[1] )
258             && !ref( $_[1] )
259             && Scalar::Util::looks_like_number( $_[1] );
260             }
261             )
262             or Hydrogen::croak(
263             "Type check failed in signature for div: %s should be %s",
264             "\$_[1]", "Num" );
265              
266 1         8 (@_);
267             };
268             (
269 1         2 ${$__REF__} = do {
  1         7  
270 1         4 my $shv_final_unchecked = $$__REF__ / $_[1];
271 1         2 do {
272             (
273 1 50       2 do {
274              
275             package Hydrogen::Number::__SANDBOX__;
276 4     4   30 use Scalar::Util ();
  4         7  
  4         650  
277 1 50 33     11 defined($shv_final_unchecked)
278             && !ref($shv_final_unchecked)
279             && Scalar::Util::looks_like_number(
280             $shv_final_unchecked);
281             }
282             )
283             or Hydrogen::croak(
284             "Type check failed for div: expected %s, got value %s",
285             "Num", $shv_final_unchecked );
286 1         3 $shv_final_unchecked;
287             };
288             }
289             );
290             }
291              
292             =head2 C<< eq( $number, $num ) >>
293              
294             Additional arguments: B<< Num >>.
295              
296             Returns C<< $number == $num >>.
297              
298             =cut
299              
300             sub eq {
301 2     2 1 18 my $__REF__ = \$_[0];
302              
303             package Hydrogen::Number::__SANDBOX__;
304 2         4 @_ = do {
305 2         22 my ( %tmp, $tmp );
306              
307 2 50       279 @_ == 2
308             or Hydrogen::croak(
309             "Wrong number of parameters in signature for %s: got %d, %s",
310             "eq", scalar(@_), "expected exactly 2 parameters" );
311              
312             # Parameter $_[0] (type: Num)
313             (
314 2 50       5 do {
315              
316             package Hydrogen::Number::__SANDBOX__;
317 4     4   30 use Scalar::Util ();
  4         8  
  4         307  
318 2 50 33     28 defined( $_[0] )
319             && !ref( $_[0] )
320             && Scalar::Util::looks_like_number( $_[0] );
321             }
322             )
323             or Hydrogen::croak(
324             "Type check failed in signature for eq: %s should be %s",
325             "\$_[0]", "Num" );
326              
327             # Parameter $_[1] (type: Num)
328             (
329 2 50       5 do {
330              
331             package Hydrogen::Number::__SANDBOX__;
332 4     4   26 use Scalar::Util ();
  4         6  
  4         869  
333 2 50 33     20 defined( $_[1] )
334             && !ref( $_[1] )
335             && Scalar::Util::looks_like_number( $_[1] );
336             }
337             )
338             or Hydrogen::croak(
339             "Type check failed in signature for eq: %s should be %s",
340             "\$_[1]", "Num" );
341              
342 2         8 (@_);
343             };
344 2         21 $$__REF__ == $_[1];
345             }
346              
347             =head2 C<< floor( $number ) >>
348              
349             Finds the floor of the current number, updating the original value. Like C from L, but in-place.
350              
351             =cut
352              
353             sub floor {
354 0     0 1 0 my $__REF__ = \$_[0];
355              
356             package Hydrogen::Number::__SANDBOX__;
357 0 0       0 @_ == 1
358             or Hydrogen::croak( "Wrong number of parameters for floor; usage: "
359             . "Hydrogen::Number::floor( \$number )" );
360 0         0 1;
361 4     4   25 use POSIX ();
  4         6  
  4         479  
362 0         0 ( ${$__REF__} = POSIX::floor($$__REF__) );
  0         0  
363             }
364              
365             =head2 C<< ge( $number, $num ) >>
366              
367             Additional arguments: B<< Num >>.
368              
369             Returns C<< $number >= $num >>.
370              
371             =cut
372              
373             sub ge {
374 0     0 1 0 my $__REF__ = \$_[0];
375              
376             package Hydrogen::Number::__SANDBOX__;
377 0         0 @_ = do {
378 0         0 my ( %tmp, $tmp );
379              
380 0 0       0 @_ == 2
381             or Hydrogen::croak(
382             "Wrong number of parameters in signature for %s: got %d, %s",
383             "ge", scalar(@_), "expected exactly 2 parameters" );
384              
385             # Parameter $_[0] (type: Num)
386             (
387 0 0       0 do {
388              
389             package Hydrogen::Number::__SANDBOX__;
390 4     4   77 use Scalar::Util ();
  4         7  
  4         302  
391 0 0 0     0 defined( $_[0] )
392             && !ref( $_[0] )
393             && Scalar::Util::looks_like_number( $_[0] );
394             }
395             )
396             or Hydrogen::croak(
397             "Type check failed in signature for ge: %s should be %s",
398             "\$_[0]", "Num" );
399              
400             # Parameter $_[1] (type: Num)
401             (
402 0 0       0 do {
403              
404             package Hydrogen::Number::__SANDBOX__;
405 4     4   37 use Scalar::Util ();
  4         6  
  4         1432  
406 0 0 0     0 defined( $_[1] )
407             && !ref( $_[1] )
408             && Scalar::Util::looks_like_number( $_[1] );
409             }
410             )
411             or Hydrogen::croak(
412             "Type check failed in signature for ge: %s should be %s",
413             "\$_[1]", "Num" );
414              
415 0         0 (@_);
416             };
417 0         0 $$__REF__ >= $_[1];
418             }
419              
420             =head2 C<< get( $number ) >>
421              
422             Returns the current value of the number.
423              
424             =cut
425              
426             sub get {
427 1     1 1 10925 my $__REF__ = \$_[0];
428              
429             package Hydrogen::Number::__SANDBOX__;
430 1 50       34 @_ == 1
431             or Hydrogen::croak( "Wrong number of parameters for get; usage: "
432             . "Hydrogen::Number::get( \$number )" );
433 1         9 $$__REF__;
434             }
435              
436             =head2 C<< gt( $number, $num ) >>
437              
438             Additional arguments: B<< Num >>.
439              
440             Returns C<< $number > $num >>.
441              
442             =cut
443              
444             sub gt {
445 0     0 1 0 my $__REF__ = \$_[0];
446              
447             package Hydrogen::Number::__SANDBOX__;
448 0         0 @_ = do {
449 0         0 my ( %tmp, $tmp );
450              
451 0 0       0 @_ == 2
452             or Hydrogen::croak(
453             "Wrong number of parameters in signature for %s: got %d, %s",
454             "gt", scalar(@_), "expected exactly 2 parameters" );
455              
456             # Parameter $_[0] (type: Num)
457             (
458 0 0       0 do {
459              
460             package Hydrogen::Number::__SANDBOX__;
461 4     4   29 use Scalar::Util ();
  4         9  
  4         367  
462 0 0 0     0 defined( $_[0] )
463             && !ref( $_[0] )
464             && Scalar::Util::looks_like_number( $_[0] );
465             }
466             )
467             or Hydrogen::croak(
468             "Type check failed in signature for gt: %s should be %s",
469             "\$_[0]", "Num" );
470              
471             # Parameter $_[1] (type: Num)
472             (
473 0 0       0 do {
474              
475             package Hydrogen::Number::__SANDBOX__;
476 4     4   22 use Scalar::Util ();
  4         6  
  4         728  
477 0 0 0     0 defined( $_[1] )
478             && !ref( $_[1] )
479             && Scalar::Util::looks_like_number( $_[1] );
480             }
481             )
482             or Hydrogen::croak(
483             "Type check failed in signature for gt: %s should be %s",
484             "\$_[1]", "Num" );
485              
486 0         0 (@_);
487             };
488 0         0 $$__REF__ > $_[1];
489             }
490              
491             =head2 C<< le( $number, $num ) >>
492              
493             Additional arguments: B<< Num >>.
494              
495             Returns C<< $number <= $num >>.
496              
497             =cut
498              
499             sub le {
500 0     0 1 0 my $__REF__ = \$_[0];
501              
502             package Hydrogen::Number::__SANDBOX__;
503 0         0 @_ = do {
504 0         0 my ( %tmp, $tmp );
505              
506 0 0       0 @_ == 2
507             or Hydrogen::croak(
508             "Wrong number of parameters in signature for %s: got %d, %s",
509             "le", scalar(@_), "expected exactly 2 parameters" );
510              
511             # Parameter $_[0] (type: Num)
512             (
513 0 0       0 do {
514              
515             package Hydrogen::Number::__SANDBOX__;
516 4     4   22 use Scalar::Util ();
  4         6  
  4         292  
517 0 0 0     0 defined( $_[0] )
518             && !ref( $_[0] )
519             && Scalar::Util::looks_like_number( $_[0] );
520             }
521             )
522             or Hydrogen::croak(
523             "Type check failed in signature for le: %s should be %s",
524             "\$_[0]", "Num" );
525              
526             # Parameter $_[1] (type: Num)
527             (
528 0 0       0 do {
529              
530             package Hydrogen::Number::__SANDBOX__;
531 4     4   31 use Scalar::Util ();
  4         13  
  4         669  
532 0 0 0     0 defined( $_[1] )
533             && !ref( $_[1] )
534             && Scalar::Util::looks_like_number( $_[1] );
535             }
536             )
537             or Hydrogen::croak(
538             "Type check failed in signature for le: %s should be %s",
539             "\$_[1]", "Num" );
540              
541 0         0 (@_);
542             };
543 0         0 $$__REF__ <= $_[1];
544             }
545              
546             =head2 C<< lt( $number, $num ) >>
547              
548             Additional arguments: B<< Num >>.
549              
550             Returns C<< $number < $num >>.
551              
552             =cut
553              
554             sub lt {
555 0     0 1 0 my $__REF__ = \$_[0];
556              
557             package Hydrogen::Number::__SANDBOX__;
558 0         0 @_ = do {
559 0         0 my ( %tmp, $tmp );
560              
561 0 0       0 @_ == 2
562             or Hydrogen::croak(
563             "Wrong number of parameters in signature for %s: got %d, %s",
564             "lt", scalar(@_), "expected exactly 2 parameters" );
565              
566             # Parameter $_[0] (type: Num)
567             (
568 0 0       0 do {
569              
570             package Hydrogen::Number::__SANDBOX__;
571 4     4   25 use Scalar::Util ();
  4         5  
  4         300  
572 0 0 0     0 defined( $_[0] )
573             && !ref( $_[0] )
574             && Scalar::Util::looks_like_number( $_[0] );
575             }
576             )
577             or Hydrogen::croak(
578             "Type check failed in signature for lt: %s should be %s",
579             "\$_[0]", "Num" );
580              
581             # Parameter $_[1] (type: Num)
582             (
583 0 0       0 do {
584              
585             package Hydrogen::Number::__SANDBOX__;
586 4     4   24 use Scalar::Util ();
  4         6  
  4         736  
587 0 0 0     0 defined( $_[1] )
588             && !ref( $_[1] )
589             && Scalar::Util::looks_like_number( $_[1] );
590             }
591             )
592             or Hydrogen::croak(
593             "Type check failed in signature for lt: %s should be %s",
594             "\$_[1]", "Num" );
595              
596 0         0 (@_);
597             };
598 0         0 $$__REF__ < $_[1];
599             }
600              
601             =head2 C<< mod( $number, $divisor ) >>
602              
603             Additional arguments: B<< Num >>.
604              
605             Finds the current number modulo a divisor, updating the original value.
606              
607             =cut
608              
609             sub mod {
610 1     1 1 11031 my $__REF__ = \$_[0];
611              
612             package Hydrogen::Number::__SANDBOX__;
613 1         3 @_ = do {
614 1         3 my ( %tmp, $tmp );
615              
616 1 50       6 @_ == 2
617             or Hydrogen::croak(
618             "Wrong number of parameters in signature for %s: got %d, %s",
619             "mod", scalar(@_), "expected exactly 2 parameters" );
620              
621             # Parameter $_[0] (type: Num)
622             (
623 1 50       3 do {
624              
625             package Hydrogen::Number::__SANDBOX__;
626 4     4   27 use Scalar::Util ();
  4         6  
  4         337  
627 1 50 33     16 defined( $_[0] )
628             && !ref( $_[0] )
629             && Scalar::Util::looks_like_number( $_[0] );
630             }
631             )
632             or Hydrogen::croak(
633             "Type check failed in signature for mod: %s should be %s",
634             "\$_[0]", "Num" );
635              
636             # Parameter $_[1] (type: Num)
637             (
638 1 50       3 do {
639              
640             package Hydrogen::Number::__SANDBOX__;
641 4     4   20 use Scalar::Util ();
  4         7  
  4         403  
642 1 50 33     10 defined( $_[1] )
643             && !ref( $_[1] )
644             && Scalar::Util::looks_like_number( $_[1] );
645             }
646             )
647             or Hydrogen::croak(
648             "Type check failed in signature for mod: %s should be %s",
649             "\$_[1]", "Num" );
650              
651 1         4 (@_);
652             };
653             (
654 1         3 ${$__REF__} = do {
  1         4  
655 1         3 my $shv_final_unchecked = $$__REF__ % $_[1];
656 1         2 do {
657             (
658 1 50       2 do {
659              
660             package Hydrogen::Number::__SANDBOX__;
661 4     4   19 use Scalar::Util ();
  4         7  
  4         618  
662 1 50 33     10 defined($shv_final_unchecked)
663             && !ref($shv_final_unchecked)
664             && Scalar::Util::looks_like_number(
665             $shv_final_unchecked);
666             }
667             )
668             or Hydrogen::croak(
669             "Type check failed for mod: expected %s, got value %s",
670             "Num", $shv_final_unchecked );
671 1         3 $shv_final_unchecked;
672             };
673             }
674             );
675             }
676              
677             =head2 C<< mul( $number, $factor ) >>
678              
679             Additional arguments: B<< Num >>.
680              
681             Multiplies the existing number by a number, updating the original value.
682              
683             =cut
684              
685             sub mul {
686 1     1 1 3737 my $__REF__ = \$_[0];
687              
688             package Hydrogen::Number::__SANDBOX__;
689 1         4 @_ = do {
690 1         3 my ( %tmp, $tmp );
691              
692 1 50       6 @_ == 2
693             or Hydrogen::croak(
694             "Wrong number of parameters in signature for %s: got %d, %s",
695             "mul", scalar(@_), "expected exactly 2 parameters" );
696              
697             # Parameter $_[0] (type: Num)
698             (
699 1 50       2 do {
700              
701             package Hydrogen::Number::__SANDBOX__;
702 4     4   25 use Scalar::Util ();
  4         20  
  4         353  
703 1 50 33     16 defined( $_[0] )
704             && !ref( $_[0] )
705             && Scalar::Util::looks_like_number( $_[0] );
706             }
707             )
708             or Hydrogen::croak(
709             "Type check failed in signature for mul: %s should be %s",
710             "\$_[0]", "Num" );
711              
712             # Parameter $_[1] (type: Num)
713             (
714 1 50       3 do {
715              
716             package Hydrogen::Number::__SANDBOX__;
717 4     4   24 use Scalar::Util ();
  4         15  
  4         382  
718 1 50 33     9 defined( $_[1] )
719             && !ref( $_[1] )
720             && Scalar::Util::looks_like_number( $_[1] );
721             }
722             )
723             or Hydrogen::croak(
724             "Type check failed in signature for mul: %s should be %s",
725             "\$_[1]", "Num" );
726              
727 1         5 (@_);
728             };
729             (
730 1         2 ${$__REF__} = do {
  1         5  
731 1         3 my $shv_final_unchecked = $$__REF__ * $_[1];
732 1         2 do {
733             (
734 1 50       3 do {
735              
736             package Hydrogen::Number::__SANDBOX__;
737 4     4   20 use Scalar::Util ();
  4         6  
  4         658  
738 1 50 33     19 defined($shv_final_unchecked)
739             && !ref($shv_final_unchecked)
740             && Scalar::Util::looks_like_number(
741             $shv_final_unchecked);
742             }
743             )
744             or Hydrogen::croak(
745             "Type check failed for mul: expected %s, got value %s",
746             "Num", $shv_final_unchecked );
747 1         4 $shv_final_unchecked;
748             };
749             }
750             );
751             }
752              
753             =head2 C<< ne( $number, $num ) >>
754              
755             Additional arguments: B<< Num >>.
756              
757             Returns C<< $number != $num >>.
758              
759             =cut
760              
761             sub ne {
762 1     1 1 3 my $__REF__ = \$_[0];
763              
764             package Hydrogen::Number::__SANDBOX__;
765 1         3 @_ = do {
766 1         3 my ( %tmp, $tmp );
767              
768 1 50       5 @_ == 2
769             or Hydrogen::croak(
770             "Wrong number of parameters in signature for %s: got %d, %s",
771             "ne", scalar(@_), "expected exactly 2 parameters" );
772              
773             # Parameter $_[0] (type: Num)
774             (
775 1 50       3 do {
776              
777             package Hydrogen::Number::__SANDBOX__;
778 4     4   24 use Scalar::Util ();
  4         6  
  4         298  
779 1 50 33     14 defined( $_[0] )
780             && !ref( $_[0] )
781             && Scalar::Util::looks_like_number( $_[0] );
782             }
783             )
784             or Hydrogen::croak(
785             "Type check failed in signature for ne: %s should be %s",
786             "\$_[0]", "Num" );
787              
788             # Parameter $_[1] (type: Num)
789             (
790 1 50       3 do {
791              
792             package Hydrogen::Number::__SANDBOX__;
793 4     4   21 use Scalar::Util ();
  4         6  
  4         691  
794 1 50 33     30 defined( $_[1] )
795             && !ref( $_[1] )
796             && Scalar::Util::looks_like_number( $_[1] );
797             }
798             )
799             or Hydrogen::croak(
800             "Type check failed in signature for ne: %s should be %s",
801             "\$_[1]", "Num" );
802              
803 1         5 (@_);
804             };
805 1         8 $$__REF__ != $_[1];
806             }
807              
808             =head2 C<< set( $number, $value ) >>
809              
810             Additional arguments: B<< Num >>.
811              
812             Sets the number to a new value.
813              
814             =cut
815              
816             sub set {
817 1     1 1 5985 my $__REF__ = \$_[0];
818              
819             package Hydrogen::Number::__SANDBOX__;
820 1         3 @_ = do {
821 1         2 my ( %tmp, $tmp );
822              
823 1 50       5 @_ == 2
824             or Hydrogen::croak(
825             "Wrong number of parameters in signature for %s: got %d, %s",
826             "set", scalar(@_), "expected exactly 2 parameters" );
827              
828             # Parameter $_[0] (type: Num)
829             (
830 1 50       3 do {
831              
832             package Hydrogen::Number::__SANDBOX__;
833 4     4   23 use Scalar::Util ();
  4         6  
  4         284  
834 1 50 33     18 defined( $_[0] )
835             && !ref( $_[0] )
836             && Scalar::Util::looks_like_number( $_[0] );
837             }
838             )
839             or Hydrogen::croak(
840             "Type check failed in signature for set: %s should be %s",
841             "\$_[0]", "Num" );
842              
843             # Parameter $_[1] (type: Num)
844             (
845 1 50       2 do {
846              
847             package Hydrogen::Number::__SANDBOX__;
848 4     4   21 use Scalar::Util ();
  4         7  
  4         493  
849 1 50 33     11 defined( $_[1] )
850             && !ref( $_[1] )
851             && Scalar::Util::looks_like_number( $_[1] );
852             }
853             )
854             or Hydrogen::croak(
855             "Type check failed in signature for set: %s should be %s",
856             "\$_[1]", "Num" );
857              
858 1         4 (@_);
859             };
860             (
861 1         27 ${$__REF__} = do {
  1         5  
862 1         3 my $shv_final_unchecked = $_[1];
863 1         2 do {
864             (
865 1 50       2 do {
866              
867             package Hydrogen::Number::__SANDBOX__;
868 4     4   20 use Scalar::Util ();
  4         13  
  4         603  
869 1 50 33     10 defined($shv_final_unchecked)
870             && !ref($shv_final_unchecked)
871             && Scalar::Util::looks_like_number(
872             $shv_final_unchecked);
873             }
874             )
875             or Hydrogen::croak(
876             "Type check failed for set: expected %s, got value %s",
877             "Num", $shv_final_unchecked );
878 1         2 $shv_final_unchecked;
879             };
880             }
881             );
882             }
883              
884             =head2 C<< sub( $number, $subtrahend ) >>
885              
886             Additional arguments: B<< Num >>.
887              
888             Subtracts a number from the existing number, updating the original value.
889              
890             =cut
891              
892             sub sub {
893 1     1 1 3715 my $__REF__ = \$_[0];
894              
895             package Hydrogen::Number::__SANDBOX__;
896 1         4 @_ = do {
897 1         2 my ( %tmp, $tmp );
898              
899 1 50       5 @_ == 2
900             or Hydrogen::croak(
901             "Wrong number of parameters in signature for %s: got %d, %s",
902             "sub", scalar(@_), "expected exactly 2 parameters" );
903              
904             # Parameter $_[0] (type: Num)
905             (
906 1 50       2 do {
907              
908             package Hydrogen::Number::__SANDBOX__;
909 4     4   22 use Scalar::Util ();
  4         6  
  4         303  
910 1 50 33     16 defined( $_[0] )
911             && !ref( $_[0] )
912             && Scalar::Util::looks_like_number( $_[0] );
913             }
914             )
915             or Hydrogen::croak(
916             "Type check failed in signature for sub: %s should be %s",
917             "\$_[0]", "Num" );
918              
919             # Parameter $_[1] (type: Num)
920             (
921 1 50       3 do {
922              
923             package Hydrogen::Number::__SANDBOX__;
924 4     4   20 use Scalar::Util ();
  4         7  
  4         404  
925 1 50 33     10 defined( $_[1] )
926             && !ref( $_[1] )
927             && Scalar::Util::looks_like_number( $_[1] );
928             }
929             )
930             or Hydrogen::croak(
931             "Type check failed in signature for sub: %s should be %s",
932             "\$_[1]", "Num" );
933              
934 1         5 (@_);
935             };
936             (
937 1         3 ${$__REF__} = do {
  1         5  
938 1         4 my $shv_final_unchecked = $$__REF__ - $_[1];
939 1         2 do {
940             (
941 1 50       1 do {
942              
943             package Hydrogen::Number::__SANDBOX__;
944 4     4   22 use Scalar::Util ();
  4         6  
  4         459  
945 1 50 33     11 defined($shv_final_unchecked)
946             && !ref($shv_final_unchecked)
947             && Scalar::Util::looks_like_number(
948             $shv_final_unchecked);
949             }
950             )
951             or Hydrogen::croak(
952             "Type check failed for sub: expected %s, got value %s",
953             "Num", $shv_final_unchecked );
954 1         2 $shv_final_unchecked;
955             };
956             }
957             );
958             }
959              
960             1;
961              
962             =head1 EXPORT
963              
964             No functions are exported by this module by default. To import them all (this is usually a bad idea), use:
965              
966             use Hydrogen::Number -all;
967              
968             To import a particular function, use:
969              
970             use Hydrogen::Number 'ceil';
971              
972             To rename functions:
973              
974             use Hydrogen::Number 'ceil' => { -as => 'myfunc' };
975              
976             On Perl 5.37.2+ (or if L is installed) you can import lexically:
977              
978             use Hydrogen::Number -lexical, 'ceil';
979              
980             See L for more hints on importing.
981              
982             =head1 BUGS
983              
984             Please report any bugs to
985             L.
986              
987             =head1 SEE ALSO
988              
989             L,
990             L,
991             L,
992             L.
993              
994             =head1 AUTHOR
995              
996             Toby Inkster Etobyink@cpan.orgE.
997              
998             =head1 COPYRIGHT AND LICENCE
999              
1000             This software is copyright (c) 2022-2025 by Toby Inkster.
1001              
1002             This is free software; you can redistribute it and/or modify it under
1003             the same terms as the Perl 5 programming language system itself.
1004              
1005             =head1 DISCLAIMER OF WARRANTIES
1006              
1007             THIS PACKAGE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR IMPLIED
1008             WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF
1009             MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
1010