Timing of float functions in [ns]
  RP2040-B2 RP2040-B2 RP2350-A2 RP2350-A2 RP2350-A2 RP2350-A2 RP2350-A2
function @125MHz @125MHz @150MHz @150MHz @150MHz @150MHz @150MHz RISC-V
  libc fast ARM libc ARM DCP ARM DCP+VFP RISC-V libc RISC-V fast speed-up
sub-normals? yes no yes no yes yes no
copysignf 40 40 6 6 6 33 40 0,8
isintf 84 84 41 41 41 50 50 1,0
isoddintf 58 59 33 33 33 52 52 1,0
ispow2f 87 88 53 53 53 33 33 1,0
ldexpf 1710 125 1280 64 64 896 85 10,5
fadd 896 577 262 53 33 532 180 3,0
fsub 987 601 265 53 40 552 186 3,0
fmul 1290 469 291 73 33 793 211 3,8
fsqr 1290 479 312 27 27 800 267 3,0
fdiv 3580 707 888 133 126 1270 464 2,7
frec 3680 725 903 127 127 1320 544 2,4
fmodf 1040 334 697 145 145 522 178 2,9
remquof 3220 519 1730 249 249 1710 233 7,3
remainderf 4120 612 2040 273 273 2410 264 9,1
fcmp 1110 180 893 73 73 424 442 1,0
fcmpeq 496 310 433 53 53 167 174 1,0
fcmplt 571 310 440 60 60 197 208 0,9
fcmple 571 314 433 60 60 197 208 0,9
fcmpge 570 354 466 60 60 214 205 1,0
fcmpgt 570 350 460 60 60 208 198 1,1
fcmpun 128 64 60 53 53 40 40 1,0
int2float 846 346 260 54 54 528 128 4,1
uint2float 794 329 254 54 54 464 108 4,3
int642float 6420 474 277 144 144 639 257 2,5
uint642float 6200 438 267 114 114 559 250 2,2
fix2float 2540 454 1550 121 121 1360 221 6,2
ufix2float 2480 445 1550 94 94 1290 226 5,7
fix642float 8110 445 1570 136 136 1470 250 5,9
ufix642float 7890 417 1560 106 106 1390 250 5,6
float2int_z 251 76 163 54 54 136 53 2,6
float2int 1350 346 719 40 40 767 196 3,9
float2uint 10900 310 2010 54 54 189 167 1,1
float2int64_z 7040 419 1460 110 110 178 286 0,6
float2int64 7820 376 1950 176 176 791 254 3,1
float2uint64 5690 160 1180 87 87 304 112 2,7
float2fix 3310 339 2120 189 189 1800 190 9,5
float2ufix 12400 302 3400 236 236 1200 159 7,5
float2fix64 9400 368 3340 314 314 1860 247 7,5
float2ufix64 7890 154 2650 81 81 1300 115 11,3
truncf 139 74 89 40 40 86 55 1,6
roundf 148 85 109 52 52 91 69 1,3
floorf 949 111 487 70 70 579 71 8,2
ceilf 941 113 462 68 68 553 73 7,6
sqrtf 5880 516 3470 214 214 3440 354 9,7
deg2radf 1320 649 304 34 34 820 303 2,7
rad2degf 1320 658 302 34 34 828 297 2,8
sinf 20300 4690 6720 666 387 13200 736 17,9
sinf_deg 21600 5300 7090 717 441 14000 680 20,6
cosf 22100 4770 7060 646 365 14100 766 18,4
cosf_deg 23800 5380 7570 685 425 15200 699 21,7
sincosf 43200 4770 14000 940 574 27600 1120 24,6
sincosf_deg 44000 5440 14400 983 622 28200 1060 26,6
tanf 40000 5410 13000 1080 625 25500 1610 15,8
tanf_deg 42200 6020 13400 1120 675 26300 1550 17,0
cotanf 44400 6290 14500 1280 817 27500 1600 17,2
cotanf_deg 46500 6900 14700 1320 858 28000 1540 18,2
asinf 31000 7970 10200 1160 764 18600 542 34,3
asinf_deg 32100 8580 10400 1260 866 19300 550 35,1
acosf 31000 7820 10600 1160 738 19100 592 32,3
acosf_deg 32400 8470 10800 1250 840 19600 578 33,9
atanf 29400 5360 8910 917 525 18700 998 18,7
atanf_deg 31000 6000 9120 1010 624 19500 1050 18,6
acotanf 30700 6400 9460 1090 688 19400 1050 18,5
acotanf_deg 32200 7070 9680 1180 786 19900 1050 19,0
atan2f 34400 5180 10300 799 458 20600 1790 11,5
atanf2_deg 35500 5790 10500 895 558 21300 2080 10,2
sinhf 36000 4730 10900 496 373 21200 682 31,1
coshf 33500 9460 11800 1090 786 19700 1410 14,0
tanhf 35300 3170 10500 339 282 20500 819 25,0
asinhf 38800 4320 12700 367 302 23000 1080 21,3
acoshf 44900 10100 16200 711 590 26700 2630 10,2
atanhf 37800 2720 11700 260 206 22600 677 33,4
expf 23700 4240 8010 311 280 13700 467 29,3
exp2f 78600 4860 23100 352 325 47100 433 108,8
exp10f 97200 4860 34300 352 327 60500 530 114,2
logf 23500 6220 7590 444 307 13800 617 22,4
log2f 26700 6850 8940 544 407 15500 650 23,8
log10f 26300 6860 8820 543 407 16400 676 24,3
expm1f 28100 3510 8570 320 284 17400 595 29,2
log1pf 14600 2910 4560 211 163 8930 392 22,8
fmaf 5820 1190 1350 53 53 3040 476 6,4
powintf 60400 7370 20300 862 792 37000 1560 23,7
powf 51700 10500 16600 1020 967 31000 1720 18,0
hypotf 17100 2780 6030 451 451 8460 1380 6,1
cbrtf 17500 11700 5670 1190 998 8320 1640 5,1
absf 15 16 7 7 7 7 13 0,5
float2double 87 88 147 34 34 215 215 1,0
average: 17282 2848 5560 397 291 9951 566 13,6
median: 7890 612 2040 189 176 1710 303 7,5
Timing of double functions in [ns]
  RP2040-B2 RP2040-B2 RP2350-A2 RP2350-A2 RP2350-A2 RP2350-A2 RP2350-A2
function @125MHz @125MHz @150MHz @150MHz @150MHz @150MHz @150MHz RISC-V
  libc fast ARM libc ARM DCP ARM DCP+VFP RISC-V libc RISC-V fast speed-up
sub-normals? yes no yes no no yes no
copysign 136 136 30 30 30 27 53 0,5
isintd 203 203 56 56 56 58 52 1,1
isoddintd 154 155 40 40 40 53 46 1,2
ispow2d 110 111 46 46 46 59 53 1,1
ldexp 2490 263 1380 121 121 1040 85 12,2
dadd 1350 659 308 60 60 674 489 1,4
dsub 1460 698 315 60 60 695 496 1,4
dmul 3070 1220 472 173 173 1390 529 2,6
dsqr 3070 1230 513 274 274 1420 537 2,6
ddiv 3950 1500 3290 233 233 2480 824 3,0
drec 4080 1520 3410 354 354 2580 826 3,1
fmod 2020 410 921 165 165 750 177 4,2
remquo 6180 478 1940 232 232 2540 207 12,3
remainder 7900 606 2590 328 328 3590 236 15,2
dcmp 1700 272 923 399 399 515 510 1,0
dcmpeq 710 390 432 60 60 180 173 1,0
dcmplt 881 390 425 66 66 221 224 1,0
dcmple 881 394 432 66 66 222 224 1,0
dcmpge 869 458 472 66 66 235 224 1,0
dcmpgt 868 455 478 66 66 228 217 1,1
dcmpun 1580 64 577 60 60 810 806 1,0
int2double 679 329 347 47 47 400 320 1,3
uint2double 583 321 327 47 47 334 240 1,4
int642double 5740 416 451 163 163 750 661 1,1
uint642double 5620 368 453 133 133 672 592 1,1
fix2double 2850 446 1730 110 110 1330 447 3,0
ufix2double 2750 397 1710 87 87 1270 367 3,5
fix642double 7910 408 1840 160 160 1690 788 2,1
ufix642double 7790 358 1830 127 127 1610 719 2,2
double2int_z 410 145 154 53 53 138 132 1,0
double2int 1990 608 768 267 267 862 284 3,0
double2uint 11800 308 1900 53 53 174 180 1,0
double2int64_z 4810 539 975 134 134 127 130 1,0
double2int64 6280 513 1650 313 313 940 314 3,0
double2uint64 6070 207 1170 83 83 343 353 1,0
double2fix 4230 601 2200 438 438 1860 398 4,7
double2ufix 13700 306 3340 298 298 1140 313 3,6
double2fix64 8280 505 2960 498 498 1860 423 4,4
double2ufix64 8320 202 2630 85 85 1310 478 2,7
trunc 245 191 111 52 52 95 65 1,5
round 278 223 171 55 55 120 81 1,5
floor 1400 251 585 68 68 718 94 7,6
ceil 1480 253 570 71 71 704 97 7,3
sqrt 14700 1310 7680 274 274 7800 710 11,0
deg2rad 3160 1430 515 280 280 1460 623 2,3
rad2deg 3170 1420 513 280 280 1470 613 2,4
sin 40400 13100 9690 1310 1310 20000 2600 7,7
sin_deg 44300 14500 10400 1560 1560 21400 2770 7,7
cos 45200 13000 10600 1280 1280 22200 2990 7,4
cos_deg 49000 14400 11200 1550 1550 23600 2790 8,5
sincos 86500 13900 20100 1800 1800 41800 5030 8,3
sincos_deg 90700 15300 21300 2110 2110 43800 5060 8,7
tan 81800 15500 20200 2040 2040 40200 6080 6,6
tan_deg 84600 16900 21100 2290 2290 41800 6070 6,9
cotan 86900 17300 24500 2410 2410 43100 6110 7,1
cotan_deg 91300 18600 25600 2670 2670 45000 6150 7,3
asin 60400 21800 17900 2580 2580 29900 6370 4,7
asin_deg 63800 23100 18600 2870 2870 31700 6620 4,8
acos 62100 21900 18600 2600 2600 30800 6850 4,5
acos_deg 65500 23300 19200 2890 2890 32400 6940 4,7
atan 62700 17300 15700 1750 1750 30800 4340 7,1
atan_deg 66800 18800 16100 2020 2020 32200 4430 7,3
acotan 64700 18400 16600 1990 1990 31900 4480 7,1
acotan_deg 67900 19800 17000 2270 2270 33300 4550 7,3
atan2 68300 17400 20000 1610 1610 34000 5560 6,1
atan2_deg 71200 18800 20800 1890 1890 35800 6220 5,8
sinh 42000 6190 12800 814 814 20100 2310 8,7
cosh 62400 14200 20500 2100 2100 31300 5050 6,2
tanh 65400 4020 20500 715 715 33000 1970 16,8
asinh 48000 5610 17200 922 922 24000 2760 8,7
acosh 86600 12800 32000 2010 2010 44800 7210 6,2
atanh 38100 3610 12300 593 593 18900 1900 9,9
exp 34300 6110 11400 602 602 17100 2080 8,2
exp2 139000 10600 38100 1690 1690 69100 1820 38,0
exp10 191000 7570 57700 865 865 95600 2190 43,7
log 42900 7160 13200 861 861 22100 3530 6,3
log2 48100 8570 17000 1140 1140 24000 3440 7,0
log10 50700 8530 14900 1140 1140 26000 3550 7,3
expm1 57200 4290 15500 589 589 28100 2040 13,8
log1p 19200 2830 5580 414 414 9470 1500 6,3
fma 4200 2040 707 491 491 2050 1150 1,8
powint 121000 29200 34300 5980 5980 58800 12400 4,7
pow 90600 23400 24700 4710 4710 44800 9160 4,9
hypot 3820 5420 1470 1370 1370 1830 2720 0,7
cbrt 45900 15200 26200 2270 2270 25500 6300 4,0
absd 952 24 496 14 14 306 34 9,0
double2float 97 97 217 40 40 225 218 1,0
average: 31189 6371 9053 896 896 15077 2204 5,7
median: 7900 1310 2590 328 328 1860 719 4,5
Medium timing of functions in [ns]
  RP2040-B2 RP2040-B2 RP2350-A2 RP2350-A2 RP2350-A2 RP2350-A2 RP2350-A2
  @125MHz @125MHz @150MHz @150MHz @150MHz @150MHz @150MHz
  libc   ARM libc ARM DCP ARM DCP+VFP RISC-V libc RISC-V fast
float 12586 1730 3800 293 234 5830 435
double 19545 3840 5821 612 612 8469 1462
Comparison of effect of GCC optimization settings on C function compilation and comparison with ASM variant:
RISC-V GCC compiler 13.2.0
[ns] expf() Cheb logf() Cheb expf() Tayl logf() Merc
"C" -O0 4100 5380 5700 10300
"C" -O1 524 1150 579 1020
"C" -Og -g3 519 1120 604 1030
"C" -O2 520 727 567 1050
"C" -O3 520 727 567 1050
"C" -Ofast 520 727 560 1060
"C" -Os 513 *749* 564 1030
ASM 475 633 532 822
* = compiler included another non-inline function with similar code instead of inline