Comments (11)
I think we can close this.
from unit-api.
So I'd conclude, for any implementers to consider
- designing such a
normal form
- and let UnitConverter.concatenate(UnitConverter converter) always produce a
normal form
from unit-api.
Thanks for pointing that out. Either for the Spec or UoM Guidebook I assume some of this information will also help.
from unit-api.
I propose an amendment to the first point:
- Two Units of the same quantity are equivalent if by replacing one with the other you achieve equivalent numerical results when doing quantity calculus.
For example kilometre and kilowatt have the same UnitConverter
to their system unit (their converters can even be the same instance) but are not equivalent.
I agree that implementations should produce normal forms. In the case of unit conversions, this is simplified by the fact that the vast majority of conversions are linear, in which case commutativity (among other) applies. However one difficulty we have with current API is that UnitConverter.isLinear()
method specification is wrong. Its current specification said:
Indicates if this converter is linear. A converter is linear if:
- convert(u + v) == convert(u) + convert(v)
- convert(r * u) == r * convert(u)
It is not the usual definition of linear conversion since a converter of the form y = scale * x + offset would not comply to this definition. This prevent implementations to detect e.g. that commutativity applies for Celsius units for instance.
from unit-api.
@desruisseaux thanks for the hint, I've updated the description.
from unit-api.
Regarding UnitConverter.isLinear()
: This could be superseded by something like UnitConverter.characteristics()
to return a set of enums like Java's Collector does ...
https://docs.oracle.com/javase/8/docs/api/java/util/stream/Collector.Characteristics.html
from unit-api.
We could add new methods but should not remove any without deprecating them first. Pulling MetricPrefix from the RI into the API was already a bit of a challenge but i was not removed and the package name also changed, so existing code may be migrated with little changes to impor statements. Completely removing a method would only work another version down the road.
from unit-api.
Sorry, I did not mean to start a naming discussion.
Just as a side-note: isLinear will be used rather by API implementers than by API users.
from unit-api.
Actually @desruisseaux started it already #39
from unit-api.
@andi-huber Is there anything to do here?
from unit-api.
Thanks
from unit-api.
Related Issues (20)
- Improve code coverage of ServiceProvider HOT 3
- Fix problem with maven-javadoc-plugin
- MR 1 Spec Review
- Could Quantity use a symbol, too? HOT 1
- Upgrade JDK to Java 11 or higher
- Replace Bintray/JCenter in API build settings
- Enable discovery of prefix classes via SPI HOT 1
- Improve the JavaDoc of UnitFormat
- Remove unnecessary OSGI imports
- Convert Quantity to most fitting Prefix HOT 7
- improve interoperability of Quantity with Hibernate JPA HOT 7
- Should not cache the ServiceProvider implementation HOT 8
- Incorporate the new SI Prefixes
- Upgrade CI JDK to Java 17 or higher
- Update module-info
- Replace tabulations by 4 spaces HOT 2
- Should we deprecate MetricPrefix.DEKA()? HOT 4
- Update Spec Document for MR2 HOT 5
- enum missing in javax.measure.MetricPrefix HOT 2
- Units can have non-integer Dimension HOT 3
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from unit-api.