ldexp()

[Math]
double ldexp(double x, int exponent);

Description

Returns the value of x times 2 raised to the power of exponent.

Parameters

x: The value to calculate the fractional part.

exponent: The power of 2 to multiply x.

Returns

The value of x times 2 raised to the power of exponent.

Example Code

The code reads the value of two potentiometers connected to pins INX and INY and place the value of x times 2 raised to the power of exponent on pin OUT.

void setup() {
    pinLabel(0, "INY");  // set the label of pin 0 to "INY"
    pinLabel(1, "INX");  // set the label of pin 1 to "INX"
    pinLabel(2, "OUT");  // set the label of pin 2 to "OUT"
    pinMode(2, OUTPUT);  // set pin 2 as output
    pinLabel(3, "OUT2"); // set the label of pin 3 to "OUT2"
    pinMode(3, OUTPUT);  // set pin 3 as output

    pinLabel(4, "VCC");  // set the label of pin 4 to "VCC"
    powerPin(4);         // set pin 4 as power pin
    pinLabel(5, "GND");  // set the label of pin 5 to "GND"
    groundPin(5);        // set pin 5 as ground pin
}

void loop() {
    // read the value of the potentiometers
    int val_x = analogRead(0);
    int val_y = analogRead(1);
    // map the value of the potentiometers from 0 to 1023
    // to the range of 0 to 10
    double x = map(val_x, 0, 1023, 0, 10);
    double y = map(val_y, 0, 1023, 0, 10);
    // calculate the value of x times 2 raised to the power of y
    double z = ldexp(x, (int) y);
    // map the value of z from 0 to 10230 to 0 to 1023
    int pwm = (int) map(z, 0, 10230, 0, 1023);
    // write the value of pwm to pin 2
    analogWrite(2, pwm);
}

Notes and Warnings

This function permits a zero pointer as a directive to skip storing the exponent.