protected static Ptg calcFactDouble( Ptg[] operands )
	{
		if( operands.length != 1 )
		{
			return PtgCalculator.getNAError();
		}
		long n = PtgCalculator.getLongValue( operands );
		if( new Double( n ).isNaN() ) // Not a Num -- possibly PtgErr
		{
			return PtgCalculator.getError();
		}

		if( n < 0 )
		{
			return new PtgErr( PtgErr.ERROR_NUM );
		}
		double res = 1;
		long endPoint = (((n % 2) == 0) ? 2 : 1);
		for( long i = n; i >= endPoint; i -= 2 )
		{
			res *= i;
		}
		if( n == 0 )
		{
			res = -1;    // by convention ...
		}
// KSC: not quite right!!!	replaced with above 
		//long res =  MathFunctionCalculator.doubleFactorial(n);
		PtgNumber ptnum = new PtgNumber( res );
		return ptnum;
	}