### Question:
Stereographic extends UnitaryProjection { public static MathTransform2D create(final OperationMethod descriptor, final ParameterValueGroup values) { final Parameters parameters = Parameters.castOrWrap(values); final double latitudeOfOrigin = toRadians(parameters.doubleValue(org.geotoolkit.referencing.operation.provider.Stereographic.LATITUDE_OF_ORIGIN)); final DefaultMathTransformFactory factory = DefaultFactories.forBuildin(MathTransformFactory.class, DefaultMathTransformFactory.class); try { final NormalizedProjection projection; if (abs(latitudeOfOrigin - PI/2) < ANGLE_TOLERANCE) { projection = new PolarStereographic(factory.getOperationMethod(PolarStereographicA.NAME), parameters); } else { final boolean isSpherical = isSpherical(parameters); if (abs(latitudeOfOrigin) < ANGLE_TOLERANCE) { if (isSpherical) { projection = new EquatorialStereographic.Spherical(descriptor, parameters); } else { projection = new EquatorialStereographic(descriptor, parameters); } } else if (isSpherical) { projection = new Stereographic.Spherical(descriptor, parameters); } else { projection = new Stereographic(descriptor, parameters); } } return (MathTransform2D) projection.createMapProjection(factory); } catch (FactoryException e) { throw new IllegalArgumentException(e); } } protected  Stereographic(final OperationMethod method, final Parameters parameters);   Stereographic(final OperationMethod method, final Parameters parameters, double latitudeOfOrigin); static MathTransform2D create(final OperationMethod descriptor,
                                         final ParameterValueGroup values); @Override Matrix transform(final double[] srcPts, final int srcOff,
                            final double[] dstPts, final int dstOff,
                            final boolean derivate); @Override boolean equals(final Object object, final ComparisonMode mode);  }### Answer:
@Test public void testSphericalDerivative() throws TransformException { tolerance = 1E-9; final double delta = toRadians(100.0 / 60) / 1852; transform = create(false); assertTrue(isSpherical()); derivativeDeltas = new double[] {delta, delta}; verifyDerivative(toRadians( 0), toRadians( 0)); verifyDerivative(toRadians(-3), toRadians(30)); verifyDerivative(toRadians(+6), toRadians(60)); }
@Test public void testEllipsoidalDerivative() throws TransformException { tolerance = 1E-9; final double delta = toRadians(100.0 / 60) / 1852; transform = create(true); derivativeDeltas = new double[] {delta, delta}; verifyDerivative(toRadians( 0), toRadians( 0)); verifyDerivative(toRadians(-3), toRadians(30)); verifyDerivative(toRadians(+6), toRadians(60)); }