You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@activemq.apache.org by ta...@apache.org on 2007/08/07 20:56:45 UTC
svn commit: r563622 - in
/activemq/activemq-cpp/trunk/src/decaf/src/main/decaf/lang: Math.cpp Math.h
Author: tabish
Date: Tue Aug 7 11:56:44 2007
New Revision: 563622
URL: http://svn.apache.org/viewvc?view=rev&rev=563622
Log:
http://issues.apache.org/activemq/browse/AMQCPP-103
Implementing more of the Math functions
Modified:
activemq/activemq-cpp/trunk/src/decaf/src/main/decaf/lang/Math.cpp
activemq/activemq-cpp/trunk/src/decaf/src/main/decaf/lang/Math.h
Modified: activemq/activemq-cpp/trunk/src/decaf/src/main/decaf/lang/Math.cpp
URL: http://svn.apache.org/viewvc/activemq/activemq-cpp/trunk/src/decaf/src/main/decaf/lang/Math.cpp?view=diff&rev=563622&r1=563621&r2=563622
==============================================================================
--- activemq/activemq-cpp/trunk/src/decaf/src/main/decaf/lang/Math.cpp (original)
+++ activemq/activemq-cpp/trunk/src/decaf/src/main/decaf/lang/Math.cpp Tue Aug 7 11:56:44 2007
@@ -43,6 +43,31 @@
}
////////////////////////////////////////////////////////////////////////////////
+double Math::acos( double value ) {
+ return std::acos( value );
+}
+
+////////////////////////////////////////////////////////////////////////////////
+double Math::asin( double value ) {
+ return std::asin( value );
+}
+
+////////////////////////////////////////////////////////////////////////////////
+double Math::atan( double value ) {
+ return std::atan( value );
+}
+
+////////////////////////////////////////////////////////////////////////////////
+double Math::atan2( double x, double y ) {
+ return std::atan2( x, y );
+}
+
+////////////////////////////////////////////////////////////////////////////////
+double Math::random() {
+ return 0.0
+}
+
+////////////////////////////////////////////////////////////////////////////////
float Math::min( float a, float b ) {
if( a > b ) {
Modified: activemq/activemq-cpp/trunk/src/decaf/src/main/decaf/lang/Math.h
URL: http://svn.apache.org/viewvc/activemq/activemq-cpp/trunk/src/decaf/src/main/decaf/lang/Math.h?view=diff&rev=563622&r1=563621&r2=563622
==============================================================================
--- activemq/activemq-cpp/trunk/src/decaf/src/main/decaf/lang/Math.h (original)
+++ activemq/activemq-cpp/trunk/src/decaf/src/main/decaf/lang/Math.h Tue Aug 7 11:56:44 2007
@@ -20,6 +20,7 @@
#include <decaf/util/Config.h>
+// On some systems there is a min and max macro defined.
#undef min
#undef max
@@ -104,6 +105,89 @@
static double abs( double value );
/**
+ * Returns the arc cosine of an angle, in the range of 0.0 through pi.
+ * Special case:
+ *
+ * o If the argument is NaN or its absolute value is greater than 1, then
+ * the result is NaN.
+ *
+ * @param value - the value to return the arc cosine of.
+ * @returns arc cosine of value in radians.
+ */
+ static double acos( double value );
+
+ /**
+ * Returns the arc sine of an angle, in the range of -pi/2 through pi/2.
+ * Special cases:
+ *
+ * o If the argument is NaN or its absolute value is greater than 1, then
+ * the result is NaN.
+ * o If the argument is zero, then the result is a zero with the same sign
+ * as the argument.
+ *
+ * @param value - the value to return the arc cosine of.
+ * @returns arc cosine of value in radians.
+ */
+ static double asin( double value );
+
+ /**
+ * Returns the arc tangent of an angle, in the range of -pi/2 through pi/2.
+ * Special cases:
+ *
+ * o If the argument is NaN, then the result is NaN.
+ * o If the argument is zero, then the result is a zero with the same sign
+ * as the argument.
+ *
+ * @param value - the value to return the arc cosine of.
+ * @returns arc tangent of value in radians.
+ */
+ static double atan( double value );
+
+ /**
+ * Converts rectangular coordinates (x, y) to polar (r, theta). This method
+ * computes the phase theta by computing an arc tangent of y/x in the range
+ * of -pi to pi. Special cases:
+ *
+ * o If either argument is NaN, then the result is NaN.
+ * o If the first argument is positive zero and the second argument is
+ * positive, or the first argument is positive and finite and the second
+ * argument is positive infinity, then the result is positive zero.
+ * o If the first argument is negative zero and the second argument is
+ * positive, or the first argument is negative and finite and the second
+ * argument is positive infinity, then the result is negative zero.
+ * o If the first argument is positive zero and the second argument is
+ * negative, or the first argument is positive and finite and the second
+ * argument is negative infinity, then the result is the double value
+ * closest to pi.
+ * o If the first argument is negative zero and the second argument is
+ * negative, or the first argument is negative and finite and the second
+ * argument is negative infinity, then the result is the double value
+ * closest to -pi.
+ * o If the first argument is positive and the second argument is positive
+ * zero or negative zero, or the first argument is positive infinity and
+ * the second argument is finite, then the result is the double value
+ * closest to pi/2.
+ * o If the first argument is negative and the second argument is positive
+ * zero or negative zero, or the first argument is negative infinity and
+ * the second argument is finite, then the result is the double value
+ * closest to -pi/2.
+ * o If both arguments are positive infinity, then the result is the double
+ * value closest to pi/4.
+ * o If the first argument is positive infinity and the second argument is
+ * negative infinity, then the result is the double value closest to 3*pi/4.
+ * o If the first argument is negative infinity and the second argument is
+ * positive infinity, then the result is the double value closest to -pi/4.
+ * o If both arguments are negative infinity, then the result is the double
+ * value closest to -3*pi/4.
+ *
+ * @param y - the ordinate coordinate
+ * @param x - the abscissa coordinate
+ * @returns the theta component of the point (r, theta) in polar coordinates
+ * that corresponds to the point (x, y) in Cartesian coordinates.
+ */
+ static double atan2( double x, double y );
+
+ /**
* Returns the smaller of two <code>short</code> values. That is,
* the result the argument closer to the value of
* <code>Short::MIN_VALUE</code>. If the arguments have the same
@@ -358,6 +442,24 @@
* @returns the value of the argument rounded to the nearest integral value.
*/
static long long round( double value );
+
+ /**
+ * Returns a double value with a positive sign, greater than or equal to 0.0
+ * and less than 1.0. Returned values are chosen pseudorandomly with
+ * (approximately) uniform distribution from that range.
+ *
+ * When this method is first called, it creates a single new pseudorandom-number
+ * generator; This new pseudorandom-number generator is used thereafter for all
+ * calls to this method and is used nowhere else.
+ *
+ * This method is properly synchronized to allow correct use by more than
+ * one thread. However, if many threads need to generate pseudorandom numbers
+ * at a great rate, it may reduce contention for each thread to have its
+ * own pseudorandom-number generator.
+ * @returns a pseudorandom double greater than or equal to 0.0 and
+ * less than 1.0.
+ */
+ static double random();
};