Beefy Boxes and Bandwidth Generously Provided by pair Networks
go ahead... be a heretic
 
PerlMonks  

Re: sub as mathematical function

by LanX (Cardinal)
on Sep 04, 2019 at 11:35 UTC ( #11105577=note: print w/replies, xml ) Need Help??


in reply to sub as mathematical function

Provided

> input: float 0 to 1 inclusive

It's  int(9*$v)

Edit

Corrected off by one

Updated

Corrected correction ;)

Updated

The edge case 1=9/9 needs special treatment. Are you sure 8 is the maximum?

If yes max(8,int(9*$v))

max needs to be imported. (POSIX?)

List::Util#max

Cheers Rolf
(addicted to the Perl Programming Language :)
Wikisyntax for the Monastery FootballPerl is like chess, only without the dice

Replies are listed 'Best First'.
Re^2: sub as mathematical function
by Anonymous Monk on Sep 04, 2019 at 12:29 UTC
    min(int(9*$x),8) is perfect thanks all :-)
      Oh ... off by max, again! ;-)

      update

      I wouldn't count on correct input though, and additional max seems safe

      DB<5> print $_,":",max(min(int(9*$_/18),8),0),"\n" for -2..20 -2:0 -1:0 0:0 1:0 2:1 3:1 4:2 5:2 6:3 7:3 8:4 9:4 10:5 11:5 12:6 13:6 14:7 15:7 16:8 17:8 18:8 19:8 20:8

      Cheers Rolf
      (addicted to the Perl Programming Language :)
      Wikisyntax for the Monastery FootballPerl is like chess, only without the dice

        The subexpression 9*X/18 == (9x)/18 == x/2. Therefore, max(min(int($_ / 2), 8, 0);


        Dave

      >> min(int(9*$x),8)

      When number of intervals vary (not only 9), then this looks more general:
      my $intervals = 9; min( int( $intervals * $x ), $intervals - 1 )
      or:
      my $intervals = 9; int( $intervals * $x ) - int $x

Log In?
Username:
Password:

What's my password?
Create A New User
Node Status?
node history
Node Type: note [id://11105577]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this? | Other CB clients
Other Users?
Others making s'mores by the fire in the courtyard of the Monastery: (4)
As of 2021-04-11 13:02 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    No recent polls found

    Notices?