public double[] getDoubleArrayArgument(String name, boolean required){
        if(M.containsKey(name))
        {
            String a = M.get(name).trim();
            if("dD".indexOf(a.charAt(0)) == -1){illFormedArray(a," expected double array: d[a:b:c]");}
            if(a.charAt(1) != '[' || a.charAt(a.length()-1) != ']'){illFormedArray(a,"");}
            String[] parts = a.split(":");
            if(parts.length != 3){illFormedArray(a,"");}
            double start = Double.parseDouble(parts[0].trim().substring(2));
            double step = Double.parseDouble(parts[1].trim());
            double stop = Double.parseDouble(parts[2].trim().substring(0,parts[2].trim().length()-1));
            int l = (int)(Math.ceil((stop-start)/step))+1;
            System.out.println(l);
            double[] res = new double[l];
            int i =0;
            while(i < res.length && Double.compare(start, stop) <= 0)
            {
                res[i++] = start;
                start += step;
            }
            if(i < res.length)
            {
                return Arrays.copyOf(res, i);
            }
            return res;
        }
        else
        {
            if(required)
            {
                argumentMissing(name);
            }
        }
        return null;
    }