// Example program
#include <iostream>
#include <string>
#include <cmath>
int main()
{
double x = 0.5; // linear to frequency conversion
const double d = 3.0; // decades per scale
const double ten2d = std::pow (10, d);
std::cout << x << "\n";
x = (std::pow (ten2d, x) - 1) / (ten2d - 1);
std::cout << x << "\n";
x = 20.0 + (20000.0 - 20.0) * x;
std::cout << x << "\n";
x = (x - 20.0) / (20000.0 - 20.0);
std::cout << x << "\n";
x = (std::log10 ((x * (ten2d - 1)) + 1)) / std::log10 (ten2d); // inverse
std::cout << x << "\n";
}
Ly8gRXhhbXBsZSBwcm9ncmFtCiNpbmNsdWRlIDxpb3N0cmVhbT4KI2luY2x1ZGUgPHN0cmluZz4KI2luY2x1ZGUgPGNtYXRoPgoKaW50IG1haW4oKQp7CiAgICBkb3VibGUgeCA9IDAuNTsgLy8gbGluZWFyIHRvIGZyZXF1ZW5jeSBjb252ZXJzaW9uCiAgICAKICAgIGNvbnN0IGRvdWJsZSBkID0gMy4wOyAvLyBkZWNhZGVzIHBlciBzY2FsZQogICAgY29uc3QgZG91YmxlIHRlbjJkID0gc3RkOjpwb3cgKDEwLCBkKTsKICAgIHN0ZDo6Y291dCA8PCB4IDw8ICJcbiI7CiAgICAKICAgIHggPSAoc3RkOjpwb3cgKHRlbjJkLCB4KSAtIDEpIC8gKHRlbjJkIC0gMSk7CiAgICBzdGQ6OmNvdXQgPDwgeCA8PCAiXG4iOwogICAgCiAgICB4ID0gMjAuMCArICgyMDAwMC4wIC0gMjAuMCkgKiB4OwogICAgc3RkOjpjb3V0IDw8IHggPDwgIlxuIjsKICAgIAogICAgeCA9ICh4IC0gMjAuMCkgLyAoMjAwMDAuMCAtIDIwLjApOwogICAgc3RkOjpjb3V0IDw8IHggPDwgIlxuIjsKICAgIAogICAgeCA9IChzdGQ6OmxvZzEwICgoeCAqICh0ZW4yZCAtIDEpKSArIDEpKSAvIHN0ZDo6bG9nMTAgKHRlbjJkKTsgLy8gaW52ZXJzZQogICAgc3RkOjpjb3V0IDw8IHggPDwgIlxuIjsKICAgIAogICAgCn0=