go ahead... be a heretic PerlMonks

### Re: sub as mathematical function

by LanX (Cardinal)
 on Sep 04, 2019 at 11:35 UTC 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?)

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

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?