Imported Upstream version 4.0.0~alpha1

Former-commit-id: 806294f5ded97629b74c85c09952f2a74fe182d9
This commit is contained in:
Jo Shields
2015-04-07 09:35:12 +01:00
parent 283343f570
commit 3c1f479b9d
22469 changed files with 2931443 additions and 869343 deletions

View File

@@ -3,18 +3,11 @@ SUBDIRS =
include ../../build/rules.make
LIBRARY = System.Numerics.dll
LIB_MCS_FLAGS = -r:System.dll
LIB_MCS_FLAGS = -r:System.dll /unsafe -d:MONO
TEST_MCS_FLAGS = $(LIB_MCS_FLAGS)
RESOURCE_STRINGS = ../../../external/referencesource/System.Numerics/System.Numerics.txt
EXTRA_DISTFILES =
VALID_PROFILE := $(filter 4, $(FRAMEWORK_VERSION_MAJOR)) $(filter 2.1, $(FRAMEWORK_VERSION))
ifndef VALID_PROFILE
LIBRARY_NAME = dummy-System.Numerics.dll
NO_INSTALL = yes
NO_SIGN_ASSEMBLY = yes
NO_TEST = yes
endif
include ../../build/library.make

View File

@@ -0,0 +1,22 @@
using System.Globalization;
namespace System
{
partial class Environment
{
internal static string GetResourceString (string key)
{
return key;
}
internal static string GetResourceString (string key, CultureInfo culture)
{
return key;
}
internal static string GetResourceString (string key, params object[] values)
{
return string.Format (CultureInfo.InvariantCulture, key, values);
}
}
}

View File

@@ -0,0 +1,43 @@
//
// SR.cs: Manually collected resource strings for ReferenceSources
//
// Authors:
// Alexander Köplinger <alex.koeplinger@outlook.com>
//
// Permission is hereby granted, free of charge, to any person obtaining
// a copy of this software and associated documentation files (the
// "Software"), to deal in the Software without restriction, including
// without limitation the rights to use, copy, modify, merge, publish,
// distribute, sublicense, and/or sell copies of the Software, and to
// permit persons to whom the Software is furnished to do so, subject to
// the following conditions:
//
// The above copyright notice and this permission notice shall be
// included in all copies or substantial portions of the Software.
//
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
//
partial class SR
{
public const string ArgumentOutOfRange_MustBeNonNeg = "ArgumentOutOfRange_MustBeNonNeg";
public const string Argument_InvalidHexStyle = "Argument_InvalidHexStyle";
public const string Argument_InvalidNumberStyles = "Argument_InvalidNumberStyles";
public const string Argument_MustBeBigInt = "Argument_MustBeBigInt";
public const string Format_InvalidFormatSpecifier = "Format_InvalidFormatSpecifier";
public const string Format_TooLarge = "Format_TooLarge";
public const string Overflow_BigIntInfinity = "Overflow_BigIntInfinity";
public const string Overflow_Decimal = "Overflow_Decimal";
public const string Overflow_Int32 = "Overflow_Int32";
public const string Overflow_Int64 = "Overflow_Int64";
public const string Overflow_NotANumber = "Overflow_NotANumber";
public const string Overflow_ParseBigInteger = "Overflow_ParseBigInteger";
public const string Overflow_UInt32 = "Overflow_UInt32";
public const string Overflow_UInt64 = "Overflow_UInt64";
}

View File

@@ -1,4 +1,10 @@
../../build/common/Consts.cs
../../build/common/SR.cs
Assembly/AssemblyInfo.cs
System.Numerics/Complex.cs
System.Numerics/BigInteger.cs
ReferenceSources/Environment.cs
ReferenceSources/SR.cs
../../../external/referencesource/System.Numerics/System/Numerics/BigInteger.cs
../../../external/referencesource/System.Numerics/System/Numerics/BigIntegerBuilder.cs
../../../external/referencesource/System.Numerics/System/Numerics/BigNumber.cs
../../../external/referencesource/System.Numerics/System/Numerics/Complex.cs
../../../external/referencesource/System.Numerics/System/Numerics/NumericsHelpers.cs

File diff suppressed because it is too large Load Diff

View File

@@ -1,200 +0,0 @@
2013-06-12 Christoph Ruegg <git@cdrnet.ch>
* BigInteger.cs: Fix GreatestCommonDivisor to
return absolute value if one of the args is zero.
2013-06-09 Christoph Ruegg <git@cdrnet.ch>
* Complex.cs: Fix IFormattable.ToString to pass custom
format strings to double.ToString instead of string.Format.
2010-07-12 Jb Evain <jbevain@novell.com>
* Complex.cs: implement IFormattable.
2010-07-08 Jb Evain <jbevain@novell.com>
* Complex.cs: implement the different ToString overrides.
2010-07-08 Jb Evain <jbevain@novell.com>
* Complex.cs: Fix Phase. Implement Acos, Asin, Atan, Exp,
Log, Log10, Pow and Sqrt.
2010-04-23 Marek Safar <marek.safar@gmail.com>
* Complex.cs: Add explicit BigInteger operator.
2010-03-06 Rodrigo Kumpera <rkumpera@novell.com>
* BigInteger.cs: Simply Parse/TryParse.
2010-03-06 Rodrigo Kumpera <rkumpera@novell.com>
* BigInteger.cs: Add decimal operators/ctor.
2010-03-06 Rodrigo Kumpera <rkumpera@novell.com>
* BigInteger.cs: Float/double coersion operators.
2010-03-06 Rodrigo Kumpera <rkumpera@novell.com>
* BigInteger.cs: Remaining ToString overloads.
2010-03-06 Rodrigo Kumpera <rkumpera@novell.com>
* BigInteger.cs: double and float coersion ops.
ToString() and ToString(string).
2010-03-06 Rodrigo Kumpera <rkumpera@novell.com>
* BigInteger.cs: .ctor(double) and .ctor(float).
2010-03-06 Rodrigo Kumpera <rkumpera@novell.com>
* BigInteger.cs: Log.
2010-03-06 Rodrigo Kumpera <rkumpera@novell.com>
* BigInteger.cs: GreatestCommonDivisor.
2010-03-06 Rodrigo Kumpera <rkumpera@novell.com>
* BigInteger.cs: ModPow.
2010-03-06 Rodrigo Kumpera <rkumpera@novell.com>
* BigInteger.cs: / % Pow.
2010-03-06 Rodrigo Kumpera <rkumpera@novell.com>
* BigInteger.cs: DivRem.
2010-03-05 Rodrigo Kumpera <rkumpera@novell.com>
* BigInteger.cs: Simplify Mul.
2010-03-05 Rodrigo Kumpera <rkumpera@novell.com>
* BigInteger.cs: Mul.
2010-03-05 Rodrigo Kumpera <rkumpera@novell.com>
* BigInteger.cs: coersion operators for short, ushort,
byte and sbyte.
2010-03-05 Rodrigo Kumpera <rkumpera@novell.com>
* BigInteger.cs: <<, >>.
2010-03-05 Rodrigo Kumpera <rkumpera@novell.com>
* BigInteger.cs: | & ^ ~.
2010-03-05 Rodrigo Kumpera <rkumpera@novell.com>
* BigInteger.cs: ++ --, unary +.
2010-03-05 Rodrigo Kumpera <rkumpera@novell.com>
* BigInteger.cs: Abs.
2010-03-05 Rodrigo Kumpera <rkumpera@novell.com>
* BigInteger.cs: Min, Max.
2010-03-05 Rodrigo Kumpera <rkumpera@novell.com>
* BigInteger.cs: Negate.
2010-03-05 Rodrigo Kumpera <rkumpera@novell.com>
* BigInteger.cs: Sub.
2010-03-05 Rodrigo Kumpera <rkumpera@novell.com>
* BigInteger.cs: All relational ops for long.
2010-03-05 Rodrigo Kumpera <rkumpera@novell.com>
* BigInteger.cs: No need to special case long.MinValue
or int.MinValue as 2 complement negate solves it.
2010-03-05 Rodrigo Kumpera <rkumpera@novell.com>
* BigInteger.cs: long CompareTo.
2010-03-05 Rodrigo Kumpera <rkumpera@novell.com>
* BigInteger.cs: IComparable.
2010-03-04 Rodrigo Kumpera <rkumpera@novell.com>
* BigInteger.cs: Relational ops for ulong with switched args.
2010-03-04 Rodrigo Kumpera <rkumpera@novell.com>
* BigInteger.cs: Equals(ulong) and missing CLSCompliant.
2010-03-04 Rodrigo Kumpera <rkumpera@novell.com>
* BigInteger.cs: Relational ops for ulong. Fix CoreCompare.
2010-03-04 Rodrigo Kumpera <rkumpera@novell.com>
* BigInteger.cs: Add constructor and coersion operators
for ulong.
2010-03-04 Rodrigo Kumpera <rkumpera@novell.com>
* BigInteger.cs: Add constructor and coersion operators
for uint.
2010-03-04 Rodrigo Kumpera <rkumpera@novell.com>
* BigInteger.cs: Implement -1,0,1 props. Don't allocate
zero array.
2010-03-04 Rodrigo Kumpera <rkumpera@novell.com>
* BigInteger.cs: Implement IComparable and IEquatable.
2010-03-04 Rodrigo Kumpera <rkumpera@novell.com>
* BigInteger.cs: Compare and relational ops.
2010-03-04 Rodrigo Kumpera <rkumpera@novell.com>
* BigInteger.cs: Add.
2010-03-04 Rodrigo Kumpera <rkumpera@novell.com>
* BigInteger.cs: GetHashCode.
2010-03-04 Rodrigo Kumpera <rkumpera@novell.com>
* BigInteger.cs: Equals.
2010-03-04 Rodrigo Kumpera <rkumpera@novell.com>
* BigInteger.cs: Added implicit long operator.
2010-03-04 Rodrigo Kumpera <rkumpera@novell.com>
*BigInteger.cs: Added long constructor and coersion operator.
2010-03-04 Rodrigo Kumpera <rkumpera@novell.com>
* BigInteger.cs: The DLR version is close to useless. Replaced
by the initial bits of something that is API compliant.
2009-10-31 Miguel de Icaza <miguel@novell.com>
* Add BigInteger.cs from the DLR 0.92, the patch in the directory
above this one contains the patch against the original
BigIntegerv2.cs source code.
2009-10-20 Marek Safar <marek.safar@gmail.com>
* ChangeLog: Added

View File

@@ -1,349 +0,0 @@
//
// Complex.cs: Complex number support
//
// Author:
// Miguel de Icaza (miguel@gnome.org)
// Marek Safar (marek.safar@gmail.com)
// Jb Evain (jbevain@novell.com)
//
// Copyright 2009, 2010 Novell, Inc.
//
// Permission is hereby granted, free of charge, to any person obtaining
// a copy of this software and associated documentation files (the
// "Software"), to deal in the Software without restriction, including
// without limitation the rights to use, copy, modify, merge, publish,
// distribute, sublicense, and/or sell copies of the Software, and to
// permit persons to whom the Software is furnished to do so, subject to
// the following conditions:
//
// The above copyright notice and this permission notice shall be
// included in all copies or substantial portions of the Software.
//
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
//
using System;
namespace System.Numerics {
public struct Complex : IEquatable<Complex>, IFormattable
{
double real, imaginary;
public static readonly Complex ImaginaryOne = new Complex (0, 1);
public static readonly Complex One = new Complex (1, 0);
public static readonly Complex Zero = new Complex (0, 0);
public double Imaginary {
get { return imaginary; }
}
public double Real {
get { return real; }
}
public double Magnitude {
get { return Math.Sqrt (imaginary * imaginary + real * real); }
}
public double Phase {
get { return Math.Atan2 (imaginary, real); }
}
public Complex (double real, double imaginary)
{
this.imaginary = imaginary;
this.real = real;
}
public static Complex FromPolarCoordinates (double magnitude, double phase)
{
return new Complex (magnitude * Math.Cos (phase), magnitude * Math.Sin (phase));
}
public static Complex operator + (Complex left, Complex right)
{
return new Complex (left.real + right.real, left.imaginary + right.imaginary);
}
public static Complex Add (Complex left, Complex right)
{
return new Complex (left.real + right.real, left.imaginary + right.imaginary);
}
public static Complex operator - (Complex left, Complex right)
{
return new Complex (left.real - right.real, left.imaginary - right.imaginary);
}
public static Complex Subtract (Complex left, Complex right)
{
return new Complex (left.real - right.real, left.imaginary - right.imaginary);
}
public static Complex operator * (Complex left, Complex right)
{
return new Complex (
left.real * right.real - left.imaginary * right.imaginary,
left.real * right.imaginary + left.imaginary * right.real);
}
public static Complex Multiply (Complex left, Complex right)
{
return new Complex (
left.real * right.real - left.imaginary * right.imaginary,
left.real * right.imaginary + left.imaginary * right.real);
}
public static Complex operator / (Complex left, Complex right)
{
double rsri = right.real * right.real + right.imaginary * right.imaginary;
return new Complex (
(left.real * right.real + left.imaginary * right.imaginary) / rsri,
(left.imaginary * right.real - left.real * right.imaginary) / rsri);
}
public static Complex Divide (Complex dividend, Complex divisor)
{
double rsri = divisor.real * divisor.real + divisor.imaginary * divisor.imaginary;
return new Complex (
(dividend.real * divisor.real + dividend.imaginary * divisor.imaginary) / rsri,
(dividend.imaginary * divisor.real - dividend.real * divisor.imaginary) / rsri);
}
public static bool operator == (Complex left, Complex right)
{
return left.real == right.real && left.imaginary == right.imaginary;
}
public bool Equals (Complex value)
{
return real == value.real && imaginary == value.imaginary;
}
public override bool Equals (object obj)
{
if (obj == null || !(obj is Complex))
return false;
Complex r = (Complex) obj;
return real == r.real && imaginary == r.imaginary;
}
public static bool operator != (Complex left, Complex right)
{
return left.real != right.real || left.imaginary != right.imaginary;
}
public static Complex operator - (Complex value)
{
return new Complex (-value.real, -value.imaginary);
}
public static implicit operator Complex (byte value)
{
return new Complex (value, 0);
}
public static implicit operator Complex (double value)
{
return new Complex (value, 0);
}
public static implicit operator Complex (short value)
{
return new Complex (value, 0);
}
public static implicit operator Complex (int value)
{
return new Complex (value, 0);
}
public static implicit operator Complex (long value)
{
return new Complex (value, 0);
}
[CLSCompliant (false)]
public static implicit operator Complex (sbyte value)
{
return new Complex (value, 0);
}
public static implicit operator Complex (float value)
{
return new Complex (value, 0);
}
[CLSCompliant (false)]
public static implicit operator Complex (ushort value)
{
return new Complex (value, 0);
}
[CLSCompliant (false)]
public static implicit operator Complex (uint value)
{
return new Complex (value, 0);
}
[CLSCompliant (false)]
public static implicit operator Complex (ulong value)
{
return new Complex (value, 0);
}
public static explicit operator Complex (decimal value)
{
return new Complex ((double) value, 0);
}
public static explicit operator Complex (BigInteger value)
{
return new Complex ((double) value, 0);
}
public static double Abs (Complex value)
{
return Math.Sqrt (value.imaginary * value.imaginary + value.real * value.real);
}
public static Complex Conjugate (Complex value)
{
return new Complex (value.real, -value.imaginary);
}
public static Complex Cos (Complex value)
{
return new Complex (Math.Cos (value.real) * Math.Cosh (value.imaginary),
-Math.Sin (value.real) * Math.Sinh (value.imaginary));
}
public static Complex Cosh (Complex value)
{
return new Complex (Math.Cosh (value.real) * Math.Cos (value.imaginary),
Math.Sinh (value.real) * Math.Sin (value.imaginary));
}
public static Complex Negate (Complex value)
{
return -value;
}
public static Complex Sin (Complex value)
{
return new Complex (Math.Sin (value.real) * Math.Cosh (value.imaginary),
Math.Cos (value.real) * Math.Sinh (value.imaginary));
}
public static Complex Sinh (Complex value)
{
return new Complex (Math.Sinh (value.real) * Math.Cos (value.imaginary),
Math.Cosh (value.real) * Math.Sin (value.imaginary));
}
public static Complex Reciprocal (Complex value)
{
if (value == Zero)
return value;
return One / value;
}
public static Complex Tan (Complex value)
{
return Sin (value) / Cos (value);
}
public static Complex Tanh (Complex value)
{
return Sinh (value) / Cosh (value);
}
public static Complex Acos (Complex value)
{
return -ImaginaryOne * Log (value + (ImaginaryOne * Sqrt (One - (value * value))));
}
public static Complex Asin (Complex value)
{
return -ImaginaryOne * Log ((ImaginaryOne * value) + Sqrt (One - (value * value)));
}
public static Complex Atan (Complex value)
{
return (ImaginaryOne / new Complex (2, 0)) * (Log (One - (ImaginaryOne * value)) - Log (One + (ImaginaryOne * value)));
}
public static Complex Exp (Complex value)
{
var e = Math.Exp (value.real);
return new Complex (e * Math.Cos (value.imaginary), e * Math.Sin (value.imaginary));
}
public static Complex Log (Complex value)
{
return new Complex (Math.Log (Abs (value)), value.Phase);
}
public static Complex Log (Complex value, double baseValue)
{
return Log (value) / Log (new Complex (baseValue, 0));
}
public static Complex Log10 (Complex value)
{
return Log (value, 10);
}
public static Complex Sqrt (Complex value)
{
return FromPolarCoordinates (Math.Sqrt (value.Magnitude), value.Phase / 2);
}
public static Complex Pow (Complex value, double power)
{
return Pow (value, new Complex (power, 0));
}
public static Complex Pow (Complex value, Complex power)
{
return Exp (Log (value) * power);
}
public override int GetHashCode ()
{
return real.GetHashCode () ^ imaginary.GetHashCode ();
}
public override string ToString ()
{
return string.Format ("({0}, {1})", real, imaginary);
}
public string ToString (IFormatProvider provider)
{
return string.Format (provider, "({0}, {1})", real, imaginary);
}
public string ToString (string format)
{
return string.Format ("({0}, {1})", real.ToString (format), imaginary.ToString (format));
}
public string ToString (string format, IFormatProvider provider)
{
return string.Format ("({0}, {1})", real.ToString (format, provider), imaginary.ToString (format, provider));
}
}
}