% :- use_module('../prolog/units.pl'). :- use_module(library(units)). units:relative_point_origin(room_reference_temp,point(21*(si:degree_Celsius))). main :- qeval(StepDelta is 0.5 * degree_Celsius), NumberOfSteps = 6, qeval(RoomRef is room_reference_temp + 0 * isq:'Celsius_temperature'[degree_Celsius]), qeval(RoomLow is RoomRef - NumberOfSteps * StepDelta), qeval(RoomHigh is RoomRef + NumberOfSteps * StepDelta), format("Room reference temperature: ~@ (~@, ~@)~n", [ qformat(RoomRef.quantity_from(si:ice_point)), qformat(RoomRef.in(usc:degree_Fahrenheit).quantity_from(usc:zeroth_degree_Fahrenheit)), qformat(RoomRef.in(si:kelvin).quantity_from(si:absolute_zero))]), nl, F = "| ~t~s~t~20+ | ~t~s~t~20+ | ~t~s~t~20+ | ~t~s~t~20+ |~n", format(F, ["Temperature delta", "Room reference", "Ice point", "Absolute zero"]), format("|~`=t~21+|~`=t~20+|~`=t~20+|~`=t~20+|~n"), print_temp("Lowest", RoomLow), print_temp("Default", RoomRef), print_temp("Highest", RoomHigh), true. print_temp(Name, V) :- qeval(( V1 is V - room_reference_temp, V2 is V - si:ice_point in degree_Celsius, V3 is V - si:absolute_zero in degree_Celsius )), F = "| ~s~t~20+ | ~t~@~t~20+ | ~t~@~t~20+ | ~t~@~t~20+ |~n", format(F, [Name, qformat(V1), qformat(V2), qformat(V3)]), true.