Subversion Repositories HomeAutomation

Rev

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
}