Package com.rubecula.jquantity

JQuantity

See:
          Description

Interface Summary
Arithmetical Interface to define certain standard Arithmetical accessor methods.
Arithmutable This interface defines various arithmetical mutating methods.
Divisible Interface to define Divisible arithmetical operations.
Estimable The public interface Estimable defines the methods which allow an object to maintain a visible, up-to-date estimate of its value for debugging purposes.
Fuzzy This interface specifies the methods which characterize a fuzzy value: getBoundAbs, getBound, getModel.
FuzzyMutable This interface specifies the methods which allow setting fuzzy data: setBoundAbs, setBoundRel, setModel.
FuzzyPresentable This interface defines operations required for presenting fuzzy objects.
Imaginable Imaginable: the interface which defines complex operations.
Integral Interface to define Integral operations.
Measurable This interface specifies the methods which characterize a measurable (i.e.
Millable This interface is implemented by objects which can be operated on by a mill, i.e.
Mutable This interface is used to define whether an object is mutable, that is to say it has non-final instance fields with mutator methods.
Note that any object which is mutable cannot properly (and safely) be copied other than by cloning (this is a fact of Java life).
Objects which are themselves immutable but which reference Cloneable objects must implement Cloneable and the clone method must clone any referenced instances which are Cloneable.
Normalizable This interface defines the operation which can be invoked on an object to "normalize" it.
Transcendental This interface models the functions necessary for evaluating transcendental functions.
Trigonometrical This interface defines trigonometrical operations.
 

Class Summary
Approximation This Class approximates a value using an immutable double-precision value.
BaseNumber Abstract (scalar) numerical class from which to derive other concrete classes.
BaseUnit This abstract class represents, in its most primitive form, a unit of the Systeme International (SI).
Complex Representation of a Complex Number
Dimensions The public class Dimensions represents pure dimensional information - no scaling or other information.
DivisibleMutable Interface to define Mutating Divisible arithmetical operations.
Expression Class to manage a mathematical expression.
FlatUnit The public class FlatUnit is used to describe a Measurable which has been flattened out so that all its dimensions and its scale are readily apparent.
FuzzInt This class extends a WholeNumber by adding fuzzy parameters.
IntegerPresentation Presentation class to deal with integral objects in radix 10.
Item Abstract base class from which to derive other more concrete classes.
JQuantity This class represents a quantity, that is to say a value and its units.
JQuantityPresentation This class is a string-component representation of a JQuantity.
Loader This public class is used to populate the JQuantity system at run-time with various definitions of units, etc.
Manifest This class defines a "manifest" constant (a whole number which cannot be changed).
Mill This class is responsible for evaluating operations on Presentable objects.
MillFactory Factory class for Mills.
MutableNumber Abstract class from which to derive other concrete classes of mutable numbers.
NumberPresentation Public class used primarily for the output of instances of Rational.
Operator This class defines operators in the context of SymbolicPresentations and their Presentable counterparts: Expressions.
PresentableFactory Factory class for creating Presentables from double or long values (the preferred method of creating Presentables is to start with a String, create a Presentation using an implementer of PresentationFactoryInterface, and then turn that into a Presentable).
PresentationFactory Factory class for Presentations.
QuantityPresentation Presentation class to deal with quantity objects.
Rational Public class to represent precise rational numbers.
SiUnit This class represents, in its most primitive form, a unit of the Systeme International (SI).
SymbolicPresentation Class to model the presentation of symbolic text, for example in a mathematical formula.
SystemFlag The immutable class SystemFlag represents a system of units.
Units This class extends UnitsFoundation by adding instance fields: _A, _B, _PowerA, _PowerB, _Scale, _Offset and _System.
UnitsFoundation The public abstract class UnitsFoundation is the base class from which the other Units (Measurable) classes are derived.
UnitsName The class UnitsName is used to identify units.
UnitsTable This class extends HashMap to provide a table of units values.
Value This class represents a Rational which may be factored in some way.
ValuePresentation Presentation class to deal with value objects.
WholeNumber This class is a logical extension of the BigInteger class, but is an actual extension of MutableNumber.
 

Exception Summary
Expression.ExpressionException Static class to define an exception encountered when parsing a formula.
InvalidOperandException A checked exception intended to be internal to the JQuantity package, which indicates that when a mathematical operation A op B is invoked, the class of B is not valid for the operation on A.
JQuantityException This exception class is used to report problems in the JQuantity package.
 

Package com.rubecula.jquantity Description

JQuantity

Contents:


Copyright Notice

JQUANTITY Framework Project.
Copyright (C) 2002, 2003 Rubecula Software.
This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA

CVS Version: $Revision: 1.7 $

Back to Top


Overview

The following text was provided to SourceForge to describe this project:

The purpose of this project is to make available a set of Java classes which enable end users and programmers to make scientific calculations resulting in either exact quantities or quantities with known (bounded) errors.

Previously developed in the form of an end-user applet supported by beans, this project will remodel the classes for more general usage including end-user usage as a servlet or SOAP-enabled RPC.

The primary class is JQuantity. An instance of JQuantity includes the actual value (i.e. the best approximation of the value), the current precision (error bounds) and the units.

Numbers may be real or complex. JQuantity calculations use a method of lazy evaluation of transcendental-function-based quantities which either reduces or eliminates possible errors. Non-transcendental quantities are represented as rational numbers. Non-zero errors, where needed, can be characterized as uniform or Gaussian.

Methods allow representation of a JQuantity in the most appropriate text form, given a user-preferred system of units.

An extensible library of standard constants is provided. A JQuantity stack (of semi-infinite size) is provided which supports most of the standard mathematical functions. Non-supported esoteric functions can be added by accessing other calculator programs, e.g. unix calc, or by simply using the macro programming capability.

For usage as a serious online calculator for end-users, a swing-based applet class is provided which allows customization and programmability.

The applet will be extended to allow infix operations in addition to the current RPN operations.

Back to Top


JQuantity Philosophy

Here are some of the tenets of the philosophy behind the design and development of JQuantity:

Back to Top


Programming Conventions

Back to Top


Class Structure

The following is an introduction to the major classes and interfaces of the jquantity package. Use it as a starting point and/or as an adjunct to the javadoc. However, if there are discrepancies, then the javadoc must of course take should be considered definitive.

Before describing the numerical classes proper, it is important to mention two (co-) utility classes (in the util package):


Note that the two classes Presentation and Presentable are co-dependent (this is the only situation in the jquantity package where two classes are mutually dependent).

Following are descriptions of the significant jquantity classes.

Back to Top


Links:

Back to Top


Last Updated: 2003-10-16