Exemplo n.º 1
0
        private void ErrorCheck(AType argument)
        {
            if (argument.Type != ATypes.AInteger && argument.Type != ATypes.AFloat)
            {
                throw new Error.Type(TypeErrorText);
            }

            switch (argument.Rank)
            {
            case 0:
            case 1:
                AType sumValue = (argument.Rank == 0)
                        ? argument                                           // a simple scalar
                        : AFloat.Create(argument.Sum(item => item.asFloat)); // we have a vector

                if (sumValue.IsTolerablyWholeNumber && sumValue.asInteger == 0)
                {
                    throw new Error.Domain(DomainErrorText);
                }
                break;

            case 2:
                if (argument.Shape[1] > argument.Shape[0])
                {
                    throw new Error.Domain(DomainErrorText);
                }
                break;

            default:
                throw new Error.Rank(RankErrorText);
            }
        }
Exemplo n.º 2
0
        private AType VectorInverse(AType argument)
        {
            AType  result       = AArray.Create(ATypes.AFloat);
            double sqrmagnitude = argument.Sum(item => item.asFloat * item.asFloat);

            for (int i = 0; i < argument.Length; i++)
            {
                result.Add(AFloat.Create(argument[i].asFloat / sqrmagnitude));
            }

            return(result);
        }
Exemplo n.º 3
0
        private AType VectorInverse(AType argument)
        {
            AType result = AArray.Create(ATypes.AFloat);
            double sqrmagnitude = argument.Sum(item => item.asFloat * item.asFloat);

            for (int i = 0; i < argument.Length; i++)
            {
                result.Add(AFloat.Create(argument[i].asFloat / sqrmagnitude));
            }

            return result;
        }
Exemplo n.º 4
0
        private void ErrorCheck(AType argument)
        {
            if (argument.Type != ATypes.AInteger && argument.Type != ATypes.AFloat)
            {
                throw new Error.Type(TypeErrorText);
            }

            switch (argument.Rank)
            {
                case 0:
                case 1:
                    AType sumValue = (argument.Rank == 0)
                        ? argument  // a simple scalar
                        : AFloat.Create(argument.Sum(item => item.asFloat)); // we have a vector
                    
                    if (sumValue.IsTolerablyWholeNumber && sumValue.asInteger == 0)
                    {
                        throw new Error.Domain(DomainErrorText);
                    }
                    break;

                case 2:
                    if (argument.Shape[1] > argument.Shape[0])
                    {
                        throw new Error.Domain(DomainErrorText);
                    }
                    break;

                default:
                    throw new Error.Rank(RankErrorText);
            }
        }