Я определил следующие настраиваемые единицы (псевдокод):
unix_days = unix_seconds/86400;
nasa_seconds = unix_seconds - 946728000;
Это позволяет мне напрямую преобразовывать unix_seconds
в unix_days
или unix_seconds
в nasa_seconds
.
Однако я не могу напрямую преобразовать unix_days
обратно в unix_seconds
без написания другой формулы.
Точно так же я не могу преобразовать nasa_seconds
в unix_days
без написания дополнительных формул.
Есть ли умная подпрограмма или пакет Perl, которые позволят мне сделать это без написания дополнительных функций? В частности, специальный пакет преобразования единиц измерения, который:
Может угадать обратную функцию преобразования единиц измерения. Например,
f(x)=x/86400
противоположноg(y)=y*86400
.При необходимости можно применить транзитивность. Например, если
unix_seconds = nasa_seconds + 946728000
(по функциональной инверсии) иunix_days = unix_seconds/86400
, мы можем объединить их для прямого преобразования изnasa_seconds
вunix_days
.
Я могу писать формулы преобразования необычными способами, если это необходимо. Например, перевод градусов Цельсия в Фаренгейт можно записать как:
C to F: *1.8 +32
Эту форму легко перевернуть: просто следуйте инструкциям в обратном и обратном порядке, а именно:
F to C: -32 /1.8
Такое существует?