1
0
mirror of https://github.com/FFmpeg/FFmpeg.git synced 2024-12-23 12:43:46 +02:00

avutil/csp: add av_csp_trc_inv_from_id()

Mathematical inverse of av_csp_trc_from_id(), plus testing to make sure it
roundtrips correctly with the corresponding TRC.
This commit is contained in:
Niklas Haas 2024-11-25 13:35:34 +01:00
parent 28f217780b
commit bf0a6c4111
6 changed files with 471 additions and 319 deletions

View File

@ -2,6 +2,9 @@ The last version increases of all libraries were on 2024-03-07
API changes, most recent first:
2024-12-05 - xxxxxxxxxx - lavu 59.48.100 - csp.h
Add av_csp_trc_func_inv_from_id().
2024-11-25 - xxxxxxxxxx - lsws 8.12.100 - swscale.h
Allow using sws_frame_scale() dynamically, without first initializing the
SwsContext. Deprecate sws_init_context(). Add sws_frame_setup() instead.

View File

@ -170,16 +170,36 @@ static double trc_bt709(double Lc)
: a * pow(Lc, 0.45) - (a - 1.0);
}
static double trc_bt709_inv(double E)
{
const double a = BT709_alpha;
const double b = 4.500 * BT709_beta;
return (0.0 > E) ? 0.0
: ( b > E) ? E / 4.500
: pow((E + (a - 1.0)) / a, 1.0 / 0.45);
}
static double trc_gamma22(double Lc)
{
return (0.0 > Lc) ? 0.0 : pow(Lc, 1.0/ 2.2);
}
static double trc_gamma22_inv(double E)
{
return (0.0 > E) ? 0.0 : pow(E, 2.2);
}
static double trc_gamma28(double Lc)
{
return (0.0 > Lc) ? 0.0 : pow(Lc, 1.0/ 2.8);
}
static double trc_gamma28_inv(double E)
{
return (0.0 > E) ? 0.0 : pow(E, 2.8);
}
static double trc_smpte240M(double Lc)
{
const double a = 1.1115;
@ -190,6 +210,16 @@ static double trc_smpte240M(double Lc)
: a * pow(Lc, 0.45) - (a - 1.0);
}
static double trc_smpte240M_inv(double E)
{
const double a = 1.1115;
const double b = 4.000 * 0.0228;
return (0.0 > E) ? 0.0
: ( b > E) ? E / 4.000
: pow((E + (a - 1.0)) / a, 1.0 / 0.45);
}
static double trc_linear(double Lc)
{
return Lc;
@ -200,12 +230,22 @@ static double trc_log(double Lc)
return (0.01 > Lc) ? 0.0 : 1.0 + log10(Lc) / 2.0;
}
static double trc_log_inv(double E)
{
return (0.0 > E) ? 0.01 : pow(10.0, 2.0 * (E - 1.0));
}
static double trc_log_sqrt(double Lc)
{
// sqrt(10) / 1000
return (0.00316227766 > Lc) ? 0.0 : 1.0 + log10(Lc) / 2.5;
}
static double trc_log_sqrt_inv(double E)
{
return (0.0 > E) ? 0.00316227766 : pow(10.0, 2.5 * (E - 1.0));
}
static double trc_iec61966_2_4(double Lc)
{
const double a = BT709_alpha;
@ -216,6 +256,16 @@ static double trc_iec61966_2_4(double Lc)
: a * pow( Lc, 0.45) - (a - 1.0);
}
static double trc_iec61966_2_4_inv(double E)
{
const double a = BT709_alpha;
const double b = 4.500 * BT709_beta;
return (-b >= E) ? -pow((-E + (a - 1.0)) / a, 1.0 / 0.45)
: ( b > E) ? E / 4.500
: pow(( E + (a - 1.0)) / a, 1.0 / 0.45);
}
static double trc_bt1361(double Lc)
{
const double a = BT709_alpha;
@ -226,6 +276,16 @@ static double trc_bt1361(double Lc)
: a * pow( Lc, 0.45) - (a - 1.0);
}
static double trc_bt1361_inv(double E)
{
const double a = BT709_alpha;
const double b = 4.500 * BT709_beta;
return (-0.02025 >= E) ? -pow((-4.0 * E - (a - 1.0)) / a, 1.0 / 0.45) / 4.0
: ( b > E) ? E / 4.500
: pow(( E + (a - 1.0)) / a, 1.0 / 0.45);
}
static double trc_iec61966_2_1(double Lc)
{
const double a = 1.055;
@ -236,13 +296,30 @@ static double trc_iec61966_2_1(double Lc)
: a * pow(Lc, 1.0 / 2.4) - (a - 1.0);
}
static double trc_iec61966_2_1_inv(double E)
{
const double a = 1.055;
const double b = 12.92 * 0.0031308;
return (0.0 > E) ? 0.0
: ( b > E) ? E / 12.92
: pow((E + (a - 1.0)) / a, 2.4);
return E;
}
#define PQ_c1 ( 3424.0 / 4096.0) /* c3-c2 + 1 */
#define PQ_c2 ( 32.0 * 2413.0 / 4096.0)
#define PQ_c3 ( 32.0 * 2392.0 / 4096.0)
#define PQ_m (128.0 * 2523.0 / 4096.0)
#define PQ_n ( 0.25 * 2610.0 / 4096.0)
static double trc_smpte_st2084(double Lc)
{
const double c1 = 3424.0 / 4096.0; // c3-c2 + 1
const double c2 = 32.0 * 2413.0 / 4096.0;
const double c3 = 32.0 * 2392.0 / 4096.0;
const double m = 128.0 * 2523.0 / 4096.0;
const double n = 0.25 * 2610.0 / 4096.0;
const double c1 = PQ_c1;
const double c2 = PQ_c2;
const double c3 = PQ_c3;
const double m = PQ_m;
const double n = PQ_n;
const double L = Lc / 10000.0;
const double Ln = pow(L, n);
@ -251,24 +328,56 @@ static double trc_smpte_st2084(double Lc)
}
static double trc_smpte_st428_1(double Lc)
static double trc_smpte_st2084_inv(double E)
{
return (0.0 > Lc) ? 0.0
: pow(48.0 * Lc / 52.37, 1.0 / 2.6);
const double c1 = PQ_c1;
const double c2 = PQ_c2;
const double c3 = PQ_c3;
const double m = PQ_m;
const double n = PQ_n;
const double Em = pow(E, 1.0 / m);
return (c1 > Em) ? 0.0
: 10000.0 * pow((Em - c1) / (c2 - c3 * Em), 1.0 / n);
}
#define DCI_L 48.00
#define DCI_P 52.37
static double trc_smpte_st428_1(double Lc)
{
return (0.0 > Lc) ? 0.0 : pow(DCI_L / DCI_P * Lc, 1.0 / 2.6);
}
static double trc_smpte_st428_1_inv(double E)
{
return (0.0 > E) ? 0.0 : DCI_P / DCI_L * pow(E, 2.6);
}
#define HLG_a 0.17883277
#define HLG_b 0.28466892
#define HLG_c 0.55991073
static double trc_arib_std_b67(double Lc) {
// The function uses the definition from HEVC, which assumes that the peak
// white is input level = 1. (this is equivalent to scaling E = Lc * 12 and
// using the definition from the ARIB STD-B67 spec)
const double a = 0.17883277;
const double b = 0.28466892;
const double c = 0.55991073;
const double a = HLG_a;
const double b = HLG_b;
const double c = HLG_c;
return (0.0 > Lc) ? 0.0 :
(Lc <= 1.0 / 12.0 ? sqrt(3.0 * Lc) : a * log(12.0 * Lc - b) + c);
}
static double trc_arib_std_b67_inv(double E)
{
const double a = HLG_a;
const double b = HLG_b;
const double c = HLG_c;
return (0.0 > E) ? 0.0 :
(E <= 0.5 ? E * E / 3.0 : (exp((E - c) / a) + b) / 12.0);
}
static const av_csp_trc_function trc_funcs[AVCOL_TRC_NB] = {
[AVCOL_TRC_BT709] = trc_bt709,
[AVCOL_TRC_GAMMA22] = trc_gamma22,
@ -294,3 +403,29 @@ av_csp_trc_function av_csp_trc_func_from_id(enum AVColorTransferCharacteristic t
return NULL;
return trc_funcs[trc];
}
static const av_csp_trc_function trc_inv_funcs[AVCOL_TRC_NB] = {
[AVCOL_TRC_BT709] = trc_bt709_inv,
[AVCOL_TRC_GAMMA22] = trc_gamma22_inv,
[AVCOL_TRC_GAMMA28] = trc_gamma28_inv,
[AVCOL_TRC_SMPTE170M] = trc_bt709_inv,
[AVCOL_TRC_SMPTE240M] = trc_smpte240M_inv,
[AVCOL_TRC_LINEAR] = trc_linear,
[AVCOL_TRC_LOG] = trc_log_inv,
[AVCOL_TRC_LOG_SQRT] = trc_log_sqrt_inv,
[AVCOL_TRC_IEC61966_2_4] = trc_iec61966_2_4_inv,
[AVCOL_TRC_BT1361_ECG] = trc_bt1361_inv,
[AVCOL_TRC_IEC61966_2_1] = trc_iec61966_2_1_inv,
[AVCOL_TRC_BT2020_10] = trc_bt709_inv,
[AVCOL_TRC_BT2020_12] = trc_bt709_inv,
[AVCOL_TRC_SMPTE2084] = trc_smpte_st2084_inv,
[AVCOL_TRC_SMPTE428] = trc_smpte_st428_1_inv,
[AVCOL_TRC_ARIB_STD_B67] = trc_arib_std_b67_inv,
};
av_csp_trc_function av_csp_trc_func_inv_from_id(enum AVColorTransferCharacteristic trc)
{
if (trc >= AVCOL_TRC_NB)
return NULL;
return trc_inv_funcs[trc];
}

View File

@ -147,6 +147,11 @@ double av_csp_approximate_trc_gamma(enum AVColorTransferCharacteristic trc);
*/
av_csp_trc_function av_csp_trc_func_from_id(enum AVColorTransferCharacteristic trc);
/**
* Returns the mathematical inverse of the corresponding TRC function.
*/
av_csp_trc_function av_csp_trc_func_inv_from_id(enum AVColorTransferCharacteristic trc);
/**
* @}
*/

View File

@ -18,7 +18,9 @@
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
*/
#include <math.h>
#include <stdio.h>
#include "libavutil/csp.h"
#include "libavutil/macros.h"
#include "libavutil/pixdesc.h"
@ -34,14 +36,21 @@ int main(int argc, char *argv[])
for (enum AVColorTransferCharacteristic trc = 0; trc < AVCOL_TRC_NB; trc++) {
av_csp_trc_function func = av_csp_trc_func_from_id(trc);
av_csp_trc_function func_inv = av_csp_trc_func_inv_from_id(trc);
const char *name = av_color_transfer_name(trc);
if (!func)
continue;
for (int i = 0; i < FF_ARRAY_ELEMS(test_data); i++) {
double result = func(test_data[i]);
printf("trc=%s calling func(%f) expected=%f\n",
name, test_data[i], result);
double roundtrip = func_inv(result);
printf("trc=%s calling func(%f) expected=%f roundtrip=%f\n",
name, test_data[i], result, roundtrip);
if (result > 0.0 && fabs(roundtrip - test_data[i]) > 1e-8) {
printf(" FAIL\n");
return 1;
}
}
}
}

View File

@ -79,8 +79,8 @@
*/
#define LIBAVUTIL_VERSION_MAJOR 59
#define LIBAVUTIL_VERSION_MINOR 47
#define LIBAVUTIL_VERSION_MICRO 101
#define LIBAVUTIL_VERSION_MINOR 48
#define LIBAVUTIL_VERSION_MICRO 100
#define LIBAVUTIL_VERSION_INT AV_VERSION_INT(LIBAVUTIL_VERSION_MAJOR, \
LIBAVUTIL_VERSION_MINOR, \

View File

@ -1,304 +1,304 @@
trc=bt709 calling func(-0.100000) expected=0.000000
trc=bt709 calling func(-0.018054) expected=0.000000
trc=bt709 calling func(-0.010000) expected=0.000000
trc=bt709 calling func(-0.004490) expected=0.000000
trc=bt709 calling func(0.000000) expected=0.000000
trc=bt709 calling func(0.003162) expected=0.014230
trc=bt709 calling func(0.005000) expected=0.022500
trc=bt709 calling func(0.009000) expected=0.040500
trc=bt709 calling func(0.015000) expected=0.067500
trc=bt709 calling func(0.100000) expected=0.290748
trc=bt709 calling func(1.000000) expected=1.000000
trc=bt709 calling func(52.370000) expected=6.427531
trc=bt709 calling func(125.098765) expected=9.558517
trc=bt709 calling func(1999.111230) expected=33.512490
trc=bt709 calling func(6945.443000) expected=58.768794
trc=bt709 calling func(15123.456700) expected=83.452916
trc=bt709 calling func(19845.889230) expected=94.321297
trc=bt709 calling func(98678.423100) expected=194.219568
trc=bt709 calling func(99999.899998) expected=195.386306
trc=bt470m calling func(-0.100000) expected=0.000000
trc=bt470m calling func(-0.018054) expected=0.000000
trc=bt470m calling func(-0.010000) expected=0.000000
trc=bt470m calling func(-0.004490) expected=0.000000
trc=bt470m calling func(0.000000) expected=0.000000
trc=bt470m calling func(0.003162) expected=0.073053
trc=bt470m calling func(0.005000) expected=0.089966
trc=bt470m calling func(0.009000) expected=0.117520
trc=bt470m calling func(0.015000) expected=0.148235
trc=bt470m calling func(0.100000) expected=0.351119
trc=bt470m calling func(1.000000) expected=1.000000
trc=bt470m calling func(52.370000) expected=6.045068
trc=bt470m calling func(125.098765) expected=8.980424
trc=bt470m calling func(1999.111230) expected=31.650490
trc=bt470m calling func(6945.443000) expected=55.747738
trc=bt470m calling func(15123.456700) expected=79.403820
trc=bt470m calling func(19845.889230) expected=89.843491
trc=bt470m calling func(98678.423100) expected=186.252024
trc=bt470m calling func(99999.899998) expected=187.381657
trc=bt470bg calling func(-0.100000) expected=0.000000
trc=bt470bg calling func(-0.018054) expected=0.000000
trc=bt470bg calling func(-0.010000) expected=0.000000
trc=bt470bg calling func(-0.004490) expected=0.000000
trc=bt470bg calling func(0.000000) expected=0.000000
trc=bt470bg calling func(0.003162) expected=0.127980
trc=bt470bg calling func(0.005000) expected=0.150731
trc=bt470bg calling func(0.009000) expected=0.185940
trc=bt470bg calling func(0.015000) expected=0.223154
trc=bt470bg calling func(0.100000) expected=0.439397
trc=bt470bg calling func(1.000000) expected=1.000000
trc=bt470bg calling func(52.370000) expected=4.111100
trc=bt470bg calling func(125.098765) expected=5.610724
trc=bt470bg calling func(1999.111230) expected=15.096294
trc=bt470bg calling func(6945.443000) expected=23.552429
trc=bt470bg calling func(15123.456700) expected=31.098005
trc=bt470bg calling func(19845.889230) expected=34.267494
trc=bt470bg calling func(98678.423100) expected=60.764620
trc=bt470bg calling func(99999.899998) expected=61.054001
trc=smpte170m calling func(-0.100000) expected=0.000000
trc=smpte170m calling func(-0.018054) expected=0.000000
trc=smpte170m calling func(-0.010000) expected=0.000000
trc=smpte170m calling func(-0.004490) expected=0.000000
trc=smpte170m calling func(0.000000) expected=0.000000
trc=smpte170m calling func(0.003162) expected=0.014230
trc=smpte170m calling func(0.005000) expected=0.022500
trc=smpte170m calling func(0.009000) expected=0.040500
trc=smpte170m calling func(0.015000) expected=0.067500
trc=smpte170m calling func(0.100000) expected=0.290748
trc=smpte170m calling func(1.000000) expected=1.000000
trc=smpte170m calling func(52.370000) expected=6.427531
trc=smpte170m calling func(125.098765) expected=9.558517
trc=smpte170m calling func(1999.111230) expected=33.512490
trc=smpte170m calling func(6945.443000) expected=58.768794
trc=smpte170m calling func(15123.456700) expected=83.452916
trc=smpte170m calling func(19845.889230) expected=94.321297
trc=smpte170m calling func(98678.423100) expected=194.219568
trc=smpte170m calling func(99999.899998) expected=195.386306
trc=smpte240m calling func(-0.100000) expected=0.000000
trc=smpte240m calling func(-0.018054) expected=0.000000
trc=smpte240m calling func(-0.010000) expected=0.000000
trc=smpte240m calling func(-0.004490) expected=0.000000
trc=smpte240m calling func(0.000000) expected=0.000000
trc=smpte240m calling func(0.003162) expected=0.012649
trc=smpte240m calling func(0.005000) expected=0.020000
trc=smpte240m calling func(0.009000) expected=0.036000
trc=smpte240m calling func(0.015000) expected=0.060000
trc=smpte240m calling func(0.100000) expected=0.282875
trc=smpte240m calling func(1.000000) expected=1.000000
trc=smpte240m calling func(52.370000) expected=6.487781
trc=smpte240m calling func(125.098765) expected=9.653524
trc=smpte240m calling func(1999.111230) expected=33.873408
trc=smpte240m calling func(6945.443000) expected=59.410079
trc=smpte240m calling func(15123.456700) expected=84.368216
trc=smpte240m calling func(19845.889230) expected=95.357247
trc=smpte240m calling func(98678.423100) expected=196.364477
trc=smpte240m calling func(99999.899998) expected=197.544167
trc=linear calling func(-0.100000) expected=-0.100000
trc=linear calling func(-0.018054) expected=-0.018054
trc=linear calling func(-0.010000) expected=-0.010000
trc=linear calling func(-0.004490) expected=-0.004490
trc=linear calling func(0.000000) expected=0.000000
trc=linear calling func(0.003162) expected=0.003162
trc=linear calling func(0.005000) expected=0.005000
trc=linear calling func(0.009000) expected=0.009000
trc=linear calling func(0.015000) expected=0.015000
trc=linear calling func(0.100000) expected=0.100000
trc=linear calling func(1.000000) expected=1.000000
trc=linear calling func(52.370000) expected=52.370000
trc=linear calling func(125.098765) expected=125.098765
trc=linear calling func(1999.111230) expected=1999.111230
trc=linear calling func(6945.443000) expected=6945.443000
trc=linear calling func(15123.456700) expected=15123.456700
trc=linear calling func(19845.889230) expected=19845.889230
trc=linear calling func(98678.423100) expected=98678.423100
trc=linear calling func(99999.899998) expected=99999.899998
trc=log100 calling func(-0.100000) expected=0.000000
trc=log100 calling func(-0.018054) expected=0.000000
trc=log100 calling func(-0.010000) expected=0.000000
trc=log100 calling func(-0.004490) expected=0.000000
trc=log100 calling func(0.000000) expected=0.000000
trc=log100 calling func(0.003162) expected=0.000000
trc=log100 calling func(0.005000) expected=0.000000
trc=log100 calling func(0.009000) expected=0.000000
trc=log100 calling func(0.015000) expected=0.088046
trc=log100 calling func(0.100000) expected=0.500000
trc=log100 calling func(1.000000) expected=1.000000
trc=log100 calling func(52.370000) expected=1.859541
trc=log100 calling func(125.098765) expected=2.048627
trc=log100 calling func(1999.111230) expected=2.650418
trc=log100 calling func(6945.443000) expected=2.920850
trc=log100 calling func(15123.456700) expected=3.089826
trc=log100 calling func(19845.889230) expected=3.148835
trc=log100 calling func(98678.423100) expected=3.497111
trc=log100 calling func(99999.899998) expected=3.500000
trc=log316 calling func(-0.100000) expected=0.000000
trc=log316 calling func(-0.018054) expected=0.000000
trc=log316 calling func(-0.010000) expected=0.000000
trc=log316 calling func(-0.004490) expected=0.000000
trc=log316 calling func(0.000000) expected=0.000000
trc=log316 calling func(0.003162) expected=0.000000
trc=log316 calling func(0.005000) expected=0.079588
trc=log316 calling func(0.009000) expected=0.181697
trc=log316 calling func(0.015000) expected=0.270437
trc=log316 calling func(0.100000) expected=0.600000
trc=log316 calling func(1.000000) expected=1.000000
trc=log316 calling func(52.370000) expected=1.687633
trc=log316 calling func(125.098765) expected=1.838901
trc=log316 calling func(1999.111230) expected=2.320335
trc=log316 calling func(6945.443000) expected=2.536680
trc=log316 calling func(15123.456700) expected=2.671860
trc=log316 calling func(19845.889230) expected=2.719068
trc=log316 calling func(98678.423100) expected=2.997689
trc=log316 calling func(99999.899998) expected=3.000000
trc=iec61966-2-4 calling func(-0.100000) expected=-0.290748
trc=iec61966-2-4 calling func(-0.018054) expected=-0.081243
trc=iec61966-2-4 calling func(-0.010000) expected=-0.045000
trc=iec61966-2-4 calling func(-0.004490) expected=-0.020205
trc=iec61966-2-4 calling func(0.000000) expected=0.000000
trc=iec61966-2-4 calling func(0.003162) expected=0.014230
trc=iec61966-2-4 calling func(0.005000) expected=0.022500
trc=iec61966-2-4 calling func(0.009000) expected=0.040500
trc=iec61966-2-4 calling func(0.015000) expected=0.067500
trc=iec61966-2-4 calling func(0.100000) expected=0.290748
trc=iec61966-2-4 calling func(1.000000) expected=1.000000
trc=iec61966-2-4 calling func(52.370000) expected=6.427531
trc=iec61966-2-4 calling func(125.098765) expected=9.558517
trc=iec61966-2-4 calling func(1999.111230) expected=33.512490
trc=iec61966-2-4 calling func(6945.443000) expected=58.768794
trc=iec61966-2-4 calling func(15123.456700) expected=83.452916
trc=iec61966-2-4 calling func(19845.889230) expected=94.321297
trc=iec61966-2-4 calling func(98678.423100) expected=194.219568
trc=iec61966-2-4 calling func(99999.899998) expected=195.386306
trc=bt1361e calling func(-0.100000) expected=-0.206787
trc=bt1361e calling func(-0.018054) expected=-0.109049
trc=bt1361e calling func(-0.010000) expected=-0.089387
trc=bt1361e calling func(-0.004490) expected=-0.020205
trc=bt1361e calling func(0.000000) expected=0.000000
trc=bt1361e calling func(0.003162) expected=0.014230
trc=bt1361e calling func(0.005000) expected=0.022500
trc=bt1361e calling func(0.009000) expected=0.040500
trc=bt1361e calling func(0.015000) expected=0.067500
trc=bt1361e calling func(0.100000) expected=0.290748
trc=bt1361e calling func(1.000000) expected=1.000000
trc=bt1361e calling func(52.370000) expected=6.427531
trc=bt1361e calling func(125.098765) expected=9.558517
trc=bt1361e calling func(1999.111230) expected=33.512490
trc=bt1361e calling func(6945.443000) expected=58.768794
trc=bt1361e calling func(15123.456700) expected=83.452916
trc=bt1361e calling func(19845.889230) expected=94.321297
trc=bt1361e calling func(98678.423100) expected=194.219568
trc=bt1361e calling func(99999.899998) expected=195.386306
trc=iec61966-2-1 calling func(-0.100000) expected=0.000000
trc=iec61966-2-1 calling func(-0.018054) expected=0.000000
trc=iec61966-2-1 calling func(-0.010000) expected=0.000000
trc=iec61966-2-1 calling func(-0.004490) expected=0.000000
trc=iec61966-2-1 calling func(0.000000) expected=0.000000
trc=iec61966-2-1 calling func(0.003162) expected=0.040849
trc=iec61966-2-1 calling func(0.005000) expected=0.061009
trc=iec61966-2-1 calling func(0.009000) expected=0.093202
trc=iec61966-2-1 calling func(0.015000) expected=0.128354
trc=iec61966-2-1 calling func(0.100000) expected=0.349190
trc=iec61966-2-1 calling func(1.000000) expected=1.000000
trc=iec61966-2-1 calling func(52.370000) expected=5.434552
trc=iec61966-2-1 calling func(125.098765) expected=7.835561
trc=iec61966-2-1 calling func(1999.111230) expected=24.983090
trc=iec61966-2-1 calling func(6945.443000) expected=42.013863
trc=iec61966-2-1 calling func(15123.456700) expected=58.125003
trc=iec61966-2-1 calling func(19845.889230) expected=65.100117
trc=iec61966-2-1 calling func(98678.423100) expected=127.054607
trc=iec61966-2-1 calling func(99999.899998) expected=127.761115
trc=bt2020-10 calling func(-0.100000) expected=0.000000
trc=bt2020-10 calling func(-0.018054) expected=0.000000
trc=bt2020-10 calling func(-0.010000) expected=0.000000
trc=bt2020-10 calling func(-0.004490) expected=0.000000
trc=bt2020-10 calling func(0.000000) expected=0.000000
trc=bt2020-10 calling func(0.003162) expected=0.014230
trc=bt2020-10 calling func(0.005000) expected=0.022500
trc=bt2020-10 calling func(0.009000) expected=0.040500
trc=bt2020-10 calling func(0.015000) expected=0.067500
trc=bt2020-10 calling func(0.100000) expected=0.290748
trc=bt2020-10 calling func(1.000000) expected=1.000000
trc=bt2020-10 calling func(52.370000) expected=6.427531
trc=bt2020-10 calling func(125.098765) expected=9.558517
trc=bt2020-10 calling func(1999.111230) expected=33.512490
trc=bt2020-10 calling func(6945.443000) expected=58.768794
trc=bt2020-10 calling func(15123.456700) expected=83.452916
trc=bt2020-10 calling func(19845.889230) expected=94.321297
trc=bt2020-10 calling func(98678.423100) expected=194.219568
trc=bt2020-10 calling func(99999.899998) expected=195.386306
trc=bt2020-12 calling func(-0.100000) expected=0.000000
trc=bt2020-12 calling func(-0.018054) expected=0.000000
trc=bt2020-12 calling func(-0.010000) expected=0.000000
trc=bt2020-12 calling func(-0.004490) expected=0.000000
trc=bt2020-12 calling func(0.000000) expected=0.000000
trc=bt2020-12 calling func(0.003162) expected=0.014230
trc=bt2020-12 calling func(0.005000) expected=0.022500
trc=bt2020-12 calling func(0.009000) expected=0.040500
trc=bt2020-12 calling func(0.015000) expected=0.067500
trc=bt2020-12 calling func(0.100000) expected=0.290748
trc=bt2020-12 calling func(1.000000) expected=1.000000
trc=bt2020-12 calling func(52.370000) expected=6.427531
trc=bt2020-12 calling func(125.098765) expected=9.558517
trc=bt2020-12 calling func(1999.111230) expected=33.512490
trc=bt2020-12 calling func(6945.443000) expected=58.768794
trc=bt2020-12 calling func(15123.456700) expected=83.452916
trc=bt2020-12 calling func(19845.889230) expected=94.321297
trc=bt2020-12 calling func(98678.423100) expected=194.219568
trc=bt2020-12 calling func(99999.899998) expected=195.386306
trc=smpte2084 calling func(-0.100000) expected=0.000000
trc=smpte2084 calling func(-0.018054) expected=0.000000
trc=smpte2084 calling func(-0.010000) expected=0.000000
trc=smpte2084 calling func(-0.004490) expected=0.000000
trc=smpte2084 calling func(0.000000) expected=0.000001
trc=smpte2084 calling func(0.003162) expected=0.011839
trc=smpte2084 calling func(0.005000) expected=0.015076
trc=smpte2084 calling func(0.009000) expected=0.020379
trc=smpte2084 calling func(0.015000) expected=0.026255
trc=smpte2084 calling func(0.100000) expected=0.062337
trc=smpte2084 calling func(1.000000) expected=0.149946
trc=smpte2084 calling func(52.370000) expected=0.444693
trc=smpte2084 calling func(125.098765) expected=0.530719
trc=smpte2084 calling func(1999.111230) expected=0.827376
trc=smpte2084 calling func(6945.443000) expected=0.961586
trc=smpte2084 calling func(15123.456700) expected=1.042921
trc=smpte2084 calling func(19845.889230) expected=1.070677
trc=smpte2084 calling func(98678.423100) expected=1.225908
trc=smpte2084 calling func(99999.899998) expected=1.227127
trc=smpte428 calling func(-0.100000) expected=0.000000
trc=smpte428 calling func(-0.018054) expected=0.000000
trc=smpte428 calling func(-0.010000) expected=0.000000
trc=smpte428 calling func(-0.004490) expected=0.000000
trc=smpte428 calling func(0.000000) expected=0.000000
trc=smpte428 calling func(0.003162) expected=0.105659
trc=smpte428 calling func(0.005000) expected=0.126018
trc=smpte428 calling func(0.009000) expected=0.157985
trc=smpte428 calling func(0.015000) expected=0.192284
trc=smpte428 calling func(0.100000) expected=0.398869
trc=smpte428 calling func(1.000000) expected=0.967043
trc=smpte428 calling func(52.370000) expected=4.432321
trc=smpte428 calling func(125.098765) expected=6.195572
trc=smpte428 calling func(1999.111230) expected=17.988639
trc=smpte428 calling func(6945.443000) expected=29.041734
trc=smpte428 calling func(15123.456700) expected=39.174525
trc=smpte428 calling func(19845.889230) expected=43.490646
trc=smpte428 calling func(98678.423100) expected=80.593559
trc=smpte428 calling func(99999.899998) expected=81.006971
trc=arib-std-b67 calling func(-0.100000) expected=0.000000
trc=arib-std-b67 calling func(-0.018054) expected=0.000000
trc=arib-std-b67 calling func(-0.010000) expected=0.000000
trc=arib-std-b67 calling func(-0.004490) expected=0.000000
trc=arib-std-b67 calling func(0.000000) expected=0.000000
trc=arib-std-b67 calling func(0.003162) expected=0.097400
trc=arib-std-b67 calling func(0.005000) expected=0.122474
trc=arib-std-b67 calling func(0.009000) expected=0.164317
trc=arib-std-b67 calling func(0.015000) expected=0.212132
trc=arib-std-b67 calling func(0.100000) expected=0.544089
trc=arib-std-b67 calling func(1.000000) expected=1.000000
trc=arib-std-b67 calling func(52.370000) expected=1.712092
trc=arib-std-b67 calling func(125.098765) expected=1.867862
trc=arib-std-b67 calling func(1999.111230) expected=2.363502
trc=arib-std-b67 calling func(6945.443000) expected=2.586219
trc=arib-std-b67 calling func(15123.456700) expected=2.725380
trc=arib-std-b67 calling func(19845.889230) expected=2.773978
trc=arib-std-b67 calling func(98678.423100) expected=3.060803
trc=arib-std-b67 calling func(99999.899998) expected=3.063182
trc=bt709 calling func(-0.100000) expected=0.000000 roundtrip=0.000000
trc=bt709 calling func(-0.018054) expected=0.000000 roundtrip=0.000000
trc=bt709 calling func(-0.010000) expected=0.000000 roundtrip=0.000000
trc=bt709 calling func(-0.004490) expected=0.000000 roundtrip=0.000000
trc=bt709 calling func(0.000000) expected=0.000000 roundtrip=0.000000
trc=bt709 calling func(0.003162) expected=0.014230 roundtrip=0.003162
trc=bt709 calling func(0.005000) expected=0.022500 roundtrip=0.005000
trc=bt709 calling func(0.009000) expected=0.040500 roundtrip=0.009000
trc=bt709 calling func(0.015000) expected=0.067500 roundtrip=0.015000
trc=bt709 calling func(0.100000) expected=0.290748 roundtrip=0.100000
trc=bt709 calling func(1.000000) expected=1.000000 roundtrip=1.000000
trc=bt709 calling func(52.370000) expected=6.427531 roundtrip=52.370000
trc=bt709 calling func(125.098765) expected=9.558517 roundtrip=125.098765
trc=bt709 calling func(1999.111230) expected=33.512490 roundtrip=1999.111230
trc=bt709 calling func(6945.443000) expected=58.768794 roundtrip=6945.443000
trc=bt709 calling func(15123.456700) expected=83.452916 roundtrip=15123.456700
trc=bt709 calling func(19845.889230) expected=94.321297 roundtrip=19845.889230
trc=bt709 calling func(98678.423100) expected=194.219568 roundtrip=98678.423100
trc=bt709 calling func(99999.899998) expected=195.386306 roundtrip=99999.899998
trc=bt470m calling func(-0.100000) expected=0.000000 roundtrip=0.000000
trc=bt470m calling func(-0.018054) expected=0.000000 roundtrip=0.000000
trc=bt470m calling func(-0.010000) expected=0.000000 roundtrip=0.000000
trc=bt470m calling func(-0.004490) expected=0.000000 roundtrip=0.000000
trc=bt470m calling func(0.000000) expected=0.000000 roundtrip=0.000000
trc=bt470m calling func(0.003162) expected=0.073053 roundtrip=0.003162
trc=bt470m calling func(0.005000) expected=0.089966 roundtrip=0.005000
trc=bt470m calling func(0.009000) expected=0.117520 roundtrip=0.009000
trc=bt470m calling func(0.015000) expected=0.148235 roundtrip=0.015000
trc=bt470m calling func(0.100000) expected=0.351119 roundtrip=0.100000
trc=bt470m calling func(1.000000) expected=1.000000 roundtrip=1.000000
trc=bt470m calling func(52.370000) expected=6.045068 roundtrip=52.370000
trc=bt470m calling func(125.098765) expected=8.980424 roundtrip=125.098765
trc=bt470m calling func(1999.111230) expected=31.650490 roundtrip=1999.111230
trc=bt470m calling func(6945.443000) expected=55.747738 roundtrip=6945.443000
trc=bt470m calling func(15123.456700) expected=79.403820 roundtrip=15123.456700
trc=bt470m calling func(19845.889230) expected=89.843491 roundtrip=19845.889230
trc=bt470m calling func(98678.423100) expected=186.252024 roundtrip=98678.423100
trc=bt470m calling func(99999.899998) expected=187.381657 roundtrip=99999.899998
trc=bt470bg calling func(-0.100000) expected=0.000000 roundtrip=0.000000
trc=bt470bg calling func(-0.018054) expected=0.000000 roundtrip=0.000000
trc=bt470bg calling func(-0.010000) expected=0.000000 roundtrip=0.000000
trc=bt470bg calling func(-0.004490) expected=0.000000 roundtrip=0.000000
trc=bt470bg calling func(0.000000) expected=0.000000 roundtrip=0.000000
trc=bt470bg calling func(0.003162) expected=0.127980 roundtrip=0.003162
trc=bt470bg calling func(0.005000) expected=0.150731 roundtrip=0.005000
trc=bt470bg calling func(0.009000) expected=0.185940 roundtrip=0.009000
trc=bt470bg calling func(0.015000) expected=0.223154 roundtrip=0.015000
trc=bt470bg calling func(0.100000) expected=0.439397 roundtrip=0.100000
trc=bt470bg calling func(1.000000) expected=1.000000 roundtrip=1.000000
trc=bt470bg calling func(52.370000) expected=4.111100 roundtrip=52.370000
trc=bt470bg calling func(125.098765) expected=5.610724 roundtrip=125.098765
trc=bt470bg calling func(1999.111230) expected=15.096294 roundtrip=1999.111230
trc=bt470bg calling func(6945.443000) expected=23.552429 roundtrip=6945.443000
trc=bt470bg calling func(15123.456700) expected=31.098005 roundtrip=15123.456700
trc=bt470bg calling func(19845.889230) expected=34.267494 roundtrip=19845.889230
trc=bt470bg calling func(98678.423100) expected=60.764620 roundtrip=98678.423100
trc=bt470bg calling func(99999.899998) expected=61.054001 roundtrip=99999.899998
trc=smpte170m calling func(-0.100000) expected=0.000000 roundtrip=0.000000
trc=smpte170m calling func(-0.018054) expected=0.000000 roundtrip=0.000000
trc=smpte170m calling func(-0.010000) expected=0.000000 roundtrip=0.000000
trc=smpte170m calling func(-0.004490) expected=0.000000 roundtrip=0.000000
trc=smpte170m calling func(0.000000) expected=0.000000 roundtrip=0.000000
trc=smpte170m calling func(0.003162) expected=0.014230 roundtrip=0.003162
trc=smpte170m calling func(0.005000) expected=0.022500 roundtrip=0.005000
trc=smpte170m calling func(0.009000) expected=0.040500 roundtrip=0.009000
trc=smpte170m calling func(0.015000) expected=0.067500 roundtrip=0.015000
trc=smpte170m calling func(0.100000) expected=0.290748 roundtrip=0.100000
trc=smpte170m calling func(1.000000) expected=1.000000 roundtrip=1.000000
trc=smpte170m calling func(52.370000) expected=6.427531 roundtrip=52.370000
trc=smpte170m calling func(125.098765) expected=9.558517 roundtrip=125.098765
trc=smpte170m calling func(1999.111230) expected=33.512490 roundtrip=1999.111230
trc=smpte170m calling func(6945.443000) expected=58.768794 roundtrip=6945.443000
trc=smpte170m calling func(15123.456700) expected=83.452916 roundtrip=15123.456700
trc=smpte170m calling func(19845.889230) expected=94.321297 roundtrip=19845.889230
trc=smpte170m calling func(98678.423100) expected=194.219568 roundtrip=98678.423100
trc=smpte170m calling func(99999.899998) expected=195.386306 roundtrip=99999.899998
trc=smpte240m calling func(-0.100000) expected=0.000000 roundtrip=0.000000
trc=smpte240m calling func(-0.018054) expected=0.000000 roundtrip=0.000000
trc=smpte240m calling func(-0.010000) expected=0.000000 roundtrip=0.000000
trc=smpte240m calling func(-0.004490) expected=0.000000 roundtrip=0.000000
trc=smpte240m calling func(0.000000) expected=0.000000 roundtrip=0.000000
trc=smpte240m calling func(0.003162) expected=0.012649 roundtrip=0.003162
trc=smpte240m calling func(0.005000) expected=0.020000 roundtrip=0.005000
trc=smpte240m calling func(0.009000) expected=0.036000 roundtrip=0.009000
trc=smpte240m calling func(0.015000) expected=0.060000 roundtrip=0.015000
trc=smpte240m calling func(0.100000) expected=0.282875 roundtrip=0.100000
trc=smpte240m calling func(1.000000) expected=1.000000 roundtrip=1.000000
trc=smpte240m calling func(52.370000) expected=6.487781 roundtrip=52.370000
trc=smpte240m calling func(125.098765) expected=9.653524 roundtrip=125.098765
trc=smpte240m calling func(1999.111230) expected=33.873408 roundtrip=1999.111230
trc=smpte240m calling func(6945.443000) expected=59.410079 roundtrip=6945.443000
trc=smpte240m calling func(15123.456700) expected=84.368216 roundtrip=15123.456700
trc=smpte240m calling func(19845.889230) expected=95.357247 roundtrip=19845.889230
trc=smpte240m calling func(98678.423100) expected=196.364477 roundtrip=98678.423100
trc=smpte240m calling func(99999.899998) expected=197.544167 roundtrip=99999.899998
trc=linear calling func(-0.100000) expected=-0.100000 roundtrip=-0.100000
trc=linear calling func(-0.018054) expected=-0.018054 roundtrip=-0.018054
trc=linear calling func(-0.010000) expected=-0.010000 roundtrip=-0.010000
trc=linear calling func(-0.004490) expected=-0.004490 roundtrip=-0.004490
trc=linear calling func(0.000000) expected=0.000000 roundtrip=0.000000
trc=linear calling func(0.003162) expected=0.003162 roundtrip=0.003162
trc=linear calling func(0.005000) expected=0.005000 roundtrip=0.005000
trc=linear calling func(0.009000) expected=0.009000 roundtrip=0.009000
trc=linear calling func(0.015000) expected=0.015000 roundtrip=0.015000
trc=linear calling func(0.100000) expected=0.100000 roundtrip=0.100000
trc=linear calling func(1.000000) expected=1.000000 roundtrip=1.000000
trc=linear calling func(52.370000) expected=52.370000 roundtrip=52.370000
trc=linear calling func(125.098765) expected=125.098765 roundtrip=125.098765
trc=linear calling func(1999.111230) expected=1999.111230 roundtrip=1999.111230
trc=linear calling func(6945.443000) expected=6945.443000 roundtrip=6945.443000
trc=linear calling func(15123.456700) expected=15123.456700 roundtrip=15123.456700
trc=linear calling func(19845.889230) expected=19845.889230 roundtrip=19845.889230
trc=linear calling func(98678.423100) expected=98678.423100 roundtrip=98678.423100
trc=linear calling func(99999.899998) expected=99999.899998 roundtrip=99999.899998
trc=log100 calling func(-0.100000) expected=0.000000 roundtrip=0.010000
trc=log100 calling func(-0.018054) expected=0.000000 roundtrip=0.010000
trc=log100 calling func(-0.010000) expected=0.000000 roundtrip=0.010000
trc=log100 calling func(-0.004490) expected=0.000000 roundtrip=0.010000
trc=log100 calling func(0.000000) expected=0.000000 roundtrip=0.010000
trc=log100 calling func(0.003162) expected=0.000000 roundtrip=0.010000
trc=log100 calling func(0.005000) expected=0.000000 roundtrip=0.010000
trc=log100 calling func(0.009000) expected=0.000000 roundtrip=0.010000
trc=log100 calling func(0.015000) expected=0.088046 roundtrip=0.015000
trc=log100 calling func(0.100000) expected=0.500000 roundtrip=0.100000
trc=log100 calling func(1.000000) expected=1.000000 roundtrip=1.000000
trc=log100 calling func(52.370000) expected=1.859541 roundtrip=52.370000
trc=log100 calling func(125.098765) expected=2.048627 roundtrip=125.098765
trc=log100 calling func(1999.111230) expected=2.650418 roundtrip=1999.111230
trc=log100 calling func(6945.443000) expected=2.920850 roundtrip=6945.443000
trc=log100 calling func(15123.456700) expected=3.089826 roundtrip=15123.456700
trc=log100 calling func(19845.889230) expected=3.148835 roundtrip=19845.889230
trc=log100 calling func(98678.423100) expected=3.497111 roundtrip=98678.423100
trc=log100 calling func(99999.899998) expected=3.500000 roundtrip=99999.899998
trc=log316 calling func(-0.100000) expected=0.000000 roundtrip=0.003162
trc=log316 calling func(-0.018054) expected=0.000000 roundtrip=0.003162
trc=log316 calling func(-0.010000) expected=0.000000 roundtrip=0.003162
trc=log316 calling func(-0.004490) expected=0.000000 roundtrip=0.003162
trc=log316 calling func(0.000000) expected=0.000000 roundtrip=0.003162
trc=log316 calling func(0.003162) expected=0.000000 roundtrip=0.003162
trc=log316 calling func(0.005000) expected=0.079588 roundtrip=0.005000
trc=log316 calling func(0.009000) expected=0.181697 roundtrip=0.009000
trc=log316 calling func(0.015000) expected=0.270437 roundtrip=0.015000
trc=log316 calling func(0.100000) expected=0.600000 roundtrip=0.100000
trc=log316 calling func(1.000000) expected=1.000000 roundtrip=1.000000
trc=log316 calling func(52.370000) expected=1.687633 roundtrip=52.370000
trc=log316 calling func(125.098765) expected=1.838901 roundtrip=125.098765
trc=log316 calling func(1999.111230) expected=2.320335 roundtrip=1999.111230
trc=log316 calling func(6945.443000) expected=2.536680 roundtrip=6945.443000
trc=log316 calling func(15123.456700) expected=2.671860 roundtrip=15123.456700
trc=log316 calling func(19845.889230) expected=2.719068 roundtrip=19845.889230
trc=log316 calling func(98678.423100) expected=2.997689 roundtrip=98678.423100
trc=log316 calling func(99999.899998) expected=3.000000 roundtrip=99999.899998
trc=iec61966-2-4 calling func(-0.100000) expected=-0.290748 roundtrip=-0.100000
trc=iec61966-2-4 calling func(-0.018054) expected=-0.081243 roundtrip=-0.018054
trc=iec61966-2-4 calling func(-0.010000) expected=-0.045000 roundtrip=-0.010000
trc=iec61966-2-4 calling func(-0.004490) expected=-0.020205 roundtrip=-0.004490
trc=iec61966-2-4 calling func(0.000000) expected=0.000000 roundtrip=0.000000
trc=iec61966-2-4 calling func(0.003162) expected=0.014230 roundtrip=0.003162
trc=iec61966-2-4 calling func(0.005000) expected=0.022500 roundtrip=0.005000
trc=iec61966-2-4 calling func(0.009000) expected=0.040500 roundtrip=0.009000
trc=iec61966-2-4 calling func(0.015000) expected=0.067500 roundtrip=0.015000
trc=iec61966-2-4 calling func(0.100000) expected=0.290748 roundtrip=0.100000
trc=iec61966-2-4 calling func(1.000000) expected=1.000000 roundtrip=1.000000
trc=iec61966-2-4 calling func(52.370000) expected=6.427531 roundtrip=52.370000
trc=iec61966-2-4 calling func(125.098765) expected=9.558517 roundtrip=125.098765
trc=iec61966-2-4 calling func(1999.111230) expected=33.512490 roundtrip=1999.111230
trc=iec61966-2-4 calling func(6945.443000) expected=58.768794 roundtrip=6945.443000
trc=iec61966-2-4 calling func(15123.456700) expected=83.452916 roundtrip=15123.456700
trc=iec61966-2-4 calling func(19845.889230) expected=94.321297 roundtrip=19845.889230
trc=iec61966-2-4 calling func(98678.423100) expected=194.219568 roundtrip=98678.423100
trc=iec61966-2-4 calling func(99999.899998) expected=195.386306 roundtrip=99999.899998
trc=bt1361e calling func(-0.100000) expected=-0.206787 roundtrip=-0.100000
trc=bt1361e calling func(-0.018054) expected=-0.109049 roundtrip=-0.018054
trc=bt1361e calling func(-0.010000) expected=-0.089387 roundtrip=-0.010000
trc=bt1361e calling func(-0.004490) expected=-0.020205 roundtrip=-0.004490
trc=bt1361e calling func(0.000000) expected=0.000000 roundtrip=0.000000
trc=bt1361e calling func(0.003162) expected=0.014230 roundtrip=0.003162
trc=bt1361e calling func(0.005000) expected=0.022500 roundtrip=0.005000
trc=bt1361e calling func(0.009000) expected=0.040500 roundtrip=0.009000
trc=bt1361e calling func(0.015000) expected=0.067500 roundtrip=0.015000
trc=bt1361e calling func(0.100000) expected=0.290748 roundtrip=0.100000
trc=bt1361e calling func(1.000000) expected=1.000000 roundtrip=1.000000
trc=bt1361e calling func(52.370000) expected=6.427531 roundtrip=52.370000
trc=bt1361e calling func(125.098765) expected=9.558517 roundtrip=125.098765
trc=bt1361e calling func(1999.111230) expected=33.512490 roundtrip=1999.111230
trc=bt1361e calling func(6945.443000) expected=58.768794 roundtrip=6945.443000
trc=bt1361e calling func(15123.456700) expected=83.452916 roundtrip=15123.456700
trc=bt1361e calling func(19845.889230) expected=94.321297 roundtrip=19845.889230
trc=bt1361e calling func(98678.423100) expected=194.219568 roundtrip=98678.423100
trc=bt1361e calling func(99999.899998) expected=195.386306 roundtrip=99999.899998
trc=iec61966-2-1 calling func(-0.100000) expected=0.000000 roundtrip=0.000000
trc=iec61966-2-1 calling func(-0.018054) expected=0.000000 roundtrip=0.000000
trc=iec61966-2-1 calling func(-0.010000) expected=0.000000 roundtrip=0.000000
trc=iec61966-2-1 calling func(-0.004490) expected=0.000000 roundtrip=0.000000
trc=iec61966-2-1 calling func(0.000000) expected=0.000000 roundtrip=0.000000
trc=iec61966-2-1 calling func(0.003162) expected=0.040849 roundtrip=0.003162
trc=iec61966-2-1 calling func(0.005000) expected=0.061009 roundtrip=0.005000
trc=iec61966-2-1 calling func(0.009000) expected=0.093202 roundtrip=0.009000
trc=iec61966-2-1 calling func(0.015000) expected=0.128354 roundtrip=0.015000
trc=iec61966-2-1 calling func(0.100000) expected=0.349190 roundtrip=0.100000
trc=iec61966-2-1 calling func(1.000000) expected=1.000000 roundtrip=1.000000
trc=iec61966-2-1 calling func(52.370000) expected=5.434552 roundtrip=52.370000
trc=iec61966-2-1 calling func(125.098765) expected=7.835561 roundtrip=125.098765
trc=iec61966-2-1 calling func(1999.111230) expected=24.983090 roundtrip=1999.111230
trc=iec61966-2-1 calling func(6945.443000) expected=42.013863 roundtrip=6945.443000
trc=iec61966-2-1 calling func(15123.456700) expected=58.125003 roundtrip=15123.456700
trc=iec61966-2-1 calling func(19845.889230) expected=65.100117 roundtrip=19845.889230
trc=iec61966-2-1 calling func(98678.423100) expected=127.054607 roundtrip=98678.423100
trc=iec61966-2-1 calling func(99999.899998) expected=127.761115 roundtrip=99999.899998
trc=bt2020-10 calling func(-0.100000) expected=0.000000 roundtrip=0.000000
trc=bt2020-10 calling func(-0.018054) expected=0.000000 roundtrip=0.000000
trc=bt2020-10 calling func(-0.010000) expected=0.000000 roundtrip=0.000000
trc=bt2020-10 calling func(-0.004490) expected=0.000000 roundtrip=0.000000
trc=bt2020-10 calling func(0.000000) expected=0.000000 roundtrip=0.000000
trc=bt2020-10 calling func(0.003162) expected=0.014230 roundtrip=0.003162
trc=bt2020-10 calling func(0.005000) expected=0.022500 roundtrip=0.005000
trc=bt2020-10 calling func(0.009000) expected=0.040500 roundtrip=0.009000
trc=bt2020-10 calling func(0.015000) expected=0.067500 roundtrip=0.015000
trc=bt2020-10 calling func(0.100000) expected=0.290748 roundtrip=0.100000
trc=bt2020-10 calling func(1.000000) expected=1.000000 roundtrip=1.000000
trc=bt2020-10 calling func(52.370000) expected=6.427531 roundtrip=52.370000
trc=bt2020-10 calling func(125.098765) expected=9.558517 roundtrip=125.098765
trc=bt2020-10 calling func(1999.111230) expected=33.512490 roundtrip=1999.111230
trc=bt2020-10 calling func(6945.443000) expected=58.768794 roundtrip=6945.443000
trc=bt2020-10 calling func(15123.456700) expected=83.452916 roundtrip=15123.456700
trc=bt2020-10 calling func(19845.889230) expected=94.321297 roundtrip=19845.889230
trc=bt2020-10 calling func(98678.423100) expected=194.219568 roundtrip=98678.423100
trc=bt2020-10 calling func(99999.899998) expected=195.386306 roundtrip=99999.899998
trc=bt2020-12 calling func(-0.100000) expected=0.000000 roundtrip=0.000000
trc=bt2020-12 calling func(-0.018054) expected=0.000000 roundtrip=0.000000
trc=bt2020-12 calling func(-0.010000) expected=0.000000 roundtrip=0.000000
trc=bt2020-12 calling func(-0.004490) expected=0.000000 roundtrip=0.000000
trc=bt2020-12 calling func(0.000000) expected=0.000000 roundtrip=0.000000
trc=bt2020-12 calling func(0.003162) expected=0.014230 roundtrip=0.003162
trc=bt2020-12 calling func(0.005000) expected=0.022500 roundtrip=0.005000
trc=bt2020-12 calling func(0.009000) expected=0.040500 roundtrip=0.009000
trc=bt2020-12 calling func(0.015000) expected=0.067500 roundtrip=0.015000
trc=bt2020-12 calling func(0.100000) expected=0.290748 roundtrip=0.100000
trc=bt2020-12 calling func(1.000000) expected=1.000000 roundtrip=1.000000
trc=bt2020-12 calling func(52.370000) expected=6.427531 roundtrip=52.370000
trc=bt2020-12 calling func(125.098765) expected=9.558517 roundtrip=125.098765
trc=bt2020-12 calling func(1999.111230) expected=33.512490 roundtrip=1999.111230
trc=bt2020-12 calling func(6945.443000) expected=58.768794 roundtrip=6945.443000
trc=bt2020-12 calling func(15123.456700) expected=83.452916 roundtrip=15123.456700
trc=bt2020-12 calling func(19845.889230) expected=94.321297 roundtrip=19845.889230
trc=bt2020-12 calling func(98678.423100) expected=194.219568 roundtrip=98678.423100
trc=bt2020-12 calling func(99999.899998) expected=195.386306 roundtrip=99999.899998
trc=smpte2084 calling func(-0.100000) expected=0.000000 roundtrip=0.000000
trc=smpte2084 calling func(-0.018054) expected=0.000000 roundtrip=0.000000
trc=smpte2084 calling func(-0.010000) expected=0.000000 roundtrip=0.000000
trc=smpte2084 calling func(-0.004490) expected=0.000000 roundtrip=0.000000
trc=smpte2084 calling func(0.000000) expected=0.000001 roundtrip=0.000000
trc=smpte2084 calling func(0.003162) expected=0.011839 roundtrip=0.003162
trc=smpte2084 calling func(0.005000) expected=0.015076 roundtrip=0.005000
trc=smpte2084 calling func(0.009000) expected=0.020379 roundtrip=0.009000
trc=smpte2084 calling func(0.015000) expected=0.026255 roundtrip=0.015000
trc=smpte2084 calling func(0.100000) expected=0.062337 roundtrip=0.100000
trc=smpte2084 calling func(1.000000) expected=0.149946 roundtrip=1.000000
trc=smpte2084 calling func(52.370000) expected=0.444693 roundtrip=52.370000
trc=smpte2084 calling func(125.098765) expected=0.530719 roundtrip=125.098765
trc=smpte2084 calling func(1999.111230) expected=0.827376 roundtrip=1999.111230
trc=smpte2084 calling func(6945.443000) expected=0.961586 roundtrip=6945.443000
trc=smpte2084 calling func(15123.456700) expected=1.042921 roundtrip=15123.456700
trc=smpte2084 calling func(19845.889230) expected=1.070677 roundtrip=19845.889230
trc=smpte2084 calling func(98678.423100) expected=1.225908 roundtrip=98678.423100
trc=smpte2084 calling func(99999.899998) expected=1.227127 roundtrip=99999.899998
trc=smpte428 calling func(-0.100000) expected=0.000000 roundtrip=0.000000
trc=smpte428 calling func(-0.018054) expected=0.000000 roundtrip=0.000000
trc=smpte428 calling func(-0.010000) expected=0.000000 roundtrip=0.000000
trc=smpte428 calling func(-0.004490) expected=0.000000 roundtrip=0.000000
trc=smpte428 calling func(0.000000) expected=0.000000 roundtrip=0.000000
trc=smpte428 calling func(0.003162) expected=0.105659 roundtrip=0.003162
trc=smpte428 calling func(0.005000) expected=0.126018 roundtrip=0.005000
trc=smpte428 calling func(0.009000) expected=0.157985 roundtrip=0.009000
trc=smpte428 calling func(0.015000) expected=0.192284 roundtrip=0.015000
trc=smpte428 calling func(0.100000) expected=0.398869 roundtrip=0.100000
trc=smpte428 calling func(1.000000) expected=0.967043 roundtrip=1.000000
trc=smpte428 calling func(52.370000) expected=4.432321 roundtrip=52.370000
trc=smpte428 calling func(125.098765) expected=6.195572 roundtrip=125.098765
trc=smpte428 calling func(1999.111230) expected=17.988639 roundtrip=1999.111230
trc=smpte428 calling func(6945.443000) expected=29.041734 roundtrip=6945.443000
trc=smpte428 calling func(15123.456700) expected=39.174525 roundtrip=15123.456700
trc=smpte428 calling func(19845.889230) expected=43.490646 roundtrip=19845.889230
trc=smpte428 calling func(98678.423100) expected=80.593559 roundtrip=98678.423100
trc=smpte428 calling func(99999.899998) expected=81.006971 roundtrip=99999.899998
trc=arib-std-b67 calling func(-0.100000) expected=0.000000 roundtrip=0.000000
trc=arib-std-b67 calling func(-0.018054) expected=0.000000 roundtrip=0.000000
trc=arib-std-b67 calling func(-0.010000) expected=0.000000 roundtrip=0.000000
trc=arib-std-b67 calling func(-0.004490) expected=0.000000 roundtrip=0.000000
trc=arib-std-b67 calling func(0.000000) expected=0.000000 roundtrip=0.000000
trc=arib-std-b67 calling func(0.003162) expected=0.097400 roundtrip=0.003162
trc=arib-std-b67 calling func(0.005000) expected=0.122474 roundtrip=0.005000
trc=arib-std-b67 calling func(0.009000) expected=0.164317 roundtrip=0.009000
trc=arib-std-b67 calling func(0.015000) expected=0.212132 roundtrip=0.015000
trc=arib-std-b67 calling func(0.100000) expected=0.544089 roundtrip=0.100000
trc=arib-std-b67 calling func(1.000000) expected=1.000000 roundtrip=1.000000
trc=arib-std-b67 calling func(52.370000) expected=1.712092 roundtrip=52.370000
trc=arib-std-b67 calling func(125.098765) expected=1.867862 roundtrip=125.098765
trc=arib-std-b67 calling func(1999.111230) expected=2.363502 roundtrip=1999.111230
trc=arib-std-b67 calling func(6945.443000) expected=2.586219 roundtrip=6945.443000
trc=arib-std-b67 calling func(15123.456700) expected=2.725380 roundtrip=15123.456700
trc=arib-std-b67 calling func(19845.889230) expected=2.773978 roundtrip=19845.889230
trc=arib-std-b67 calling func(98678.423100) expected=3.060803 roundtrip=98678.423100
trc=arib-std-b67 calling func(99999.899998) expected=3.063182 roundtrip=99999.899998