code: protected static Kernel1D_F32 derivative1D_F32(int order, double sigma, int radius, boolean normalize) {
  
  		Kernel1D_F32 ret = new Kernel1D_F32(radius * 2 + 1);
  		float[] gaussian = ret.data;
  		int index = 0;
  		switch( order ) {
  			case 1:
  				for (int i = radius; i >= -radius; i--) {
  					gaussian[index++] = (float) UtilGaussian.derivative1(0, sigma, i);
  				}
  				break;
  
  			case 2:
  				for (int i = radius; i >= -radius; i--) {
  					gaussian[index++] = (float) UtilGaussian.derivative2(0, sigma, i);
  				}
  				break;
  
  			case 3:
  				for (int i = radius; i >= -radius; i--) {
  					gaussian[index++] = (float) UtilGaussian.derivative3(0, sigma, i);
  				}
  				break;
  
  			case 4:
  				for (int i = radius; i >= -radius; i--) {
  					gaussian[index++] = (float) UtilGaussian.derivative4(0, sigma, i);
  				}
  				break;
  
  			default:
  				throw new IllegalArgumentException("Only derivatives of order 1 to 4 are supported");
  		}
  
  		// multiply by the same factor as the gaussian would be normalized by
  		// otherwise it will effective change the intensity of the input image
  		if( normalize ) {
  			double sum = 0;
  			for (int i = radius; i >= -radius; i--) {
  				sum += UtilGaussian.computePDF(0, sigma, i);
  			}
  			for (int i = 0; i < gaussian.length; i++) {
  				gaussian[i] /= sum;
  			}
  		}
  		
  		return ret;
  	}
docs: Computes the derivative of a Gaussian kernel.
  
  @param sigma Distributions standard deviation.
  @param radius Kernel's radius.
  @param normalize
  @return The derivative of the gaussian