Changeset 29292 in project


Ignore:
Timestamp:
07/01/13 10:01:09 (7 years ago)
Author:
Ivan Raikov
Message:

unitconv: allow nested dimensional expressions

Location:
release/4/unitconv/trunk
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • release/4/unitconv/trunk/test.scm

    r29137 r29292  
    11(use unitconv)
    22
    3 (define-unit-prefix    milli second ms)
    4 (define-unit-prefix    milli volt   mV)
    5 (define-unit-prefix    milli amp    mA)
    6 (define-unit-prefix    nano amp     nA)
     3
     4(define-unit-prefix    milli second  ms)
     5(define-unit-prefix    milli volt    mV)
     6(define-unit-prefix    milli amp     mA)
     7(define-unit-prefix    nano amp      nA)
     8(define-unit-prefix    micro siemens uS)
     9(define-unit-prefix    milli mole    mM)
     10(define-unit-prefix    micro farad   uF)
    711(define-unit-prefix    micro siemens uS)
    812
    913(define-quantity   CurrentDensity        (/ Current Area))
     14(define-quantity   CapacitanceArea       (/ Capacitance Area))
     15(define-quantity   ConductanceArea       (/ Conductance Area))
     16(define-quantity   Resistivity           (* Resistance Length))
     17
     18(define-unit milliamp-per-square-centimeter   CurrentDensity  (/ mA (* cm cm)) mA/cm2)
     19(define-unit microfarad-per-square-centimeter CapacitanceArea (/ uF (* cm cm)) uf/cm2)
     20(define-unit siemens-per-square-centimeter    ConductanceArea (/ S (* cm cm)) S/cm2)
     21(define-unit ohm.cm                           Resistivity     (* ohm cm) ohm.cm)
    1022
    1123(define-unit amp-per-square-meter CurrentDensity (/ A (* m m)) A/m2)
    12 
    13 (define-unit milliamp-per-square-centimeter CurrentDensity (/ mA (* cm cm)) mA/cm2)
    1424
    1525(print milliamp-per-square-centimeter)
  • release/4/unitconv/trunk/unitconv.scm

    r29137 r29292  
    559559          (quantity-expr-eval    (r 'quantity-expr-eval))
    560560          (quantity?       (r 'quantity?))
    561           (quantity-int    (r 'quantity-int)))
     561          (quantity-int    (r 'quantity-int))
     562          )
    562563         
    563564      (match expr
    564565             ((op x y)
    565566              `(,%let ((,x1  (,quantity-expr-eval ,x #t))
    566                        (,y1  (,quantity-expr-eval ,y ,left?)))
     567                       (,y1  (,quantity-expr-eval ,y #f)))
    567568                 ,(case op
    568569                    ((**)    `(* ,x1 ,y1))
     
    576577                       ((,and ,left? (,integer? ,x))     
    577578                        (unitconv:error 'quantity-expr-eval
    578                                         "integers are not allowed as the left operand of quantity expression"))
     579                                        "integers are not allowed as the left operand of quantity expression" (quote ,x)))
    579580                       (,%else  (unitconv:error 'quantity-expr-eval ": unknown quantity " ,x))))))))
    580581         
  • release/4/unitconv/trunk/unitconv.setup

    r29137 r29292  
    1313 'unitconv
    1414 `( ,(dynld-name "unitconv") ,(dynld-name "unitconv.import")  )   
    15  `((version 2.4)
     15 `((version 2.5)
    1616   ))
    1717
     
    1919 'with-units
    2020 `( ,(dynld-name "with-units") ,(dynld-name "with-units.import")  )   
    21  `((version 2.4)
     21 `((version 2.5)
    2222   ))
Note: See TracChangeset for help on using the changeset viewer.