Rev 587 | Details | Compare with Previous | Last modification | View Log | SVN | RSS feed
| Rev | Author | Line No. | Line |
|---|---|---|---|
| 587 | pengi | 1 | #include <stdio.h> |
| 2 | #include <stdlib.h> |
||
| 3 | |||
| 4 | double scale( long val, long k, long m ); |
||
| 5 | long iscale( long val, long k, long m, long fact ); |
||
| 6 | |||
| 7 | int main( int argc, char *argv[] ) { |
||
| 8 | long k, m; |
||
| 9 | |||
| 10 | if( argc != 3 ) { |
||
| 11 | fprintf( stderr, "Usage: %s <k> <m>\n", argv[0] ); |
||
| 12 | return 1; |
||
| 13 | } |
||
| 14 | |||
| 15 | k=atoi(argv[1]); |
||
| 16 | m=atoi(argv[2]); |
||
| 17 | |||
| 18 | printf( "k=%d m=%d\n", k, m ); |
||
| 19 | |||
| 20 | printf( "scale( 0)=%f\n", scale( 0, k, m ) ); |
||
| 21 | printf( "scale(65535)=%f\n", scale( 65535, k, m ) ); |
||
| 22 | printf( "scale(1)-scale(0)=%f\n", scale( 1, k, m ) - scale( 0, k, m ) ); |
||
| 23 | |||
| 24 | printf( "iscale(0,100)=%d", iscale( 0, k, m, 100 ) ); |
||
| 25 | |||
| 26 | return 0; |
||
| 27 | } |
||
| 28 | |||
| 29 | double scale( long val, long k, long m ) { |
||
| 30 | return (double)m - 32768.0 + ((double)k*(double)val)/256.0; |
||
| 31 | } |
||
| 32 | |||
| 33 | long iscale( long val, long k, long m, long fact ) { |
||
| 34 | return m*fact - (fact<<15) + ((k*val*fact)>>8); |
||
| 35 | } |