10 lines
388 B
Plaintext
10 lines
388 B
Plaintext
# x is the value to be mapped.
|
|
# The ranges, a and b, should each be an array defining the
|
|
# left-most and right-most points of the range.
|
|
create or replace function maprange(a, b, x) as
|
|
b[1] + (((x - a[1]) * (b[2] - b[1]::DOUBLE)) / (a[2] - a[1]::DOUBLE)) ;
|
|
|
|
# Example 1: a single value
|
|
# (Conversion to floating point will be automatic)
|
|
select maprange([0,10], [-1, 0], 6) as mapped;
|