annotate admin/notes/iftc @ 112453:06719a229a46 default tip

* calc/calc.el (calc-default-power-reference-level) (calc-default-field-reference-level): New variables. * calc/calc-units.el (math-standard-units): Add dB and Np. (math-logunits): New variable. (math-extract-logunits, math-logcombine, calcFunc-luplus) (calcFunc-luminus, calc-luplus, calc-luminus, math-logunit-level) (calcFunc-fieldlevel, calcFunc-powerlevel, calc-level): New functions. (math-find-base-units-rec): Add entry for ln(10). * calc/calc-help.el (calc-u-prefix-help): Add logarithmic help. (calc-ul-prefix-help): New function. * calc/calc-ext.el (calc-init-extensions): Autoload new units functions. Add keybindings for new units functions.
author Jay Belanger <jay.p.belanger@gmail.com>
date Sun, 23 Jan 2011 23:08:04 -0600
parents ef719132ddfa
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
45625
28f0b229040c Initial revision
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
diff changeset
1 Iso-Functional Type Contour
28f0b229040c Initial revision
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
diff changeset
2
28f0b229040c Initial revision
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
diff changeset
3
28f0b229040c Initial revision
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
diff changeset
4 This is a term coined to describe "column int->float" change approach, and can
28f0b229040c Initial revision
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
diff changeset
5 be used whenever low-level types need to change (hopefully not often!) but the
28f0b229040c Initial revision
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
diff changeset
6 meanings of the values (whose type has changed) do not.
28f0b229040c Initial revision
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
diff changeset
7
28f0b229040c Initial revision
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
diff changeset
8 The premise is that changing a low-level type potentially means lots of code
28f0b229040c Initial revision
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
diff changeset
9 needs to be changed as well, and the question is how to do this incrementally,
28f0b229040c Initial revision
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
diff changeset
10 which is the preferred way to change things.
28f0b229040c Initial revision
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
diff changeset
11
28f0b229040c Initial revision
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
diff changeset
12 Say LOW and HIGH are C functions:
28f0b229040c Initial revision
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
diff changeset
13
28f0b229040c Initial revision
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
diff changeset
14 int LOW (void) { return 1; }
28f0b229040c Initial revision
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
diff changeset
15 void HIGH (void) { int value = LOW (); }
28f0b229040c Initial revision
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
diff changeset
16
28f0b229040c Initial revision
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
diff changeset
17 We want to convert LOW to return float, so we cast HIGH usage:
28f0b229040c Initial revision
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
diff changeset
18
28f0b229040c Initial revision
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
diff changeset
19 float LOW (void) { return 1.0; }
28f0b229040c Initial revision
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
diff changeset
20 void HIGH (void) { int value = (int) LOW (); } /* iftc */
28f0b229040c Initial revision
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
diff changeset
21
28f0b229040c Initial revision
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
diff changeset
22 The comment /* iftc */ is used to mark this type of casting to differentiate
28f0b229040c Initial revision
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
diff changeset
23 it from other casting. We commit the changes and can now go about modifying
28f0b229040c Initial revision
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
diff changeset
24 LOW and HIGH separately. When HIGH is ready to handle the type change, the
28f0b229040c Initial revision
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
diff changeset
25 cast can be removed.
52401
695cf19ef79e Add arch taglines
Miles Bader <miles@gnu.org>
parents: 45625
diff changeset
26