# File lib/gmp.rb, line 13
    def self.sprintf(format, *args)
      first_pct = format.index '%'
      result = format[0...first_pct]
      #format.gsub(/(?<!%)%[0#+ ']*[0-9]*.?[0-9]*[a-zA-Z][^%]*/) do |fragment|
      format.gsub(Regexp.new('(?<!%)%[0#+ \']*[0-9]*.?[0-9]*[a-zA-Z][^%]*')) do |fragment|
        arg = args.shift
        if fragment =~ /%[0#+ ']*[0-9]*.?[0-9]*[ZQF]/
          result << sprintf2(fragment, arg)
        elsif fragment =~ /%[0#+ ']*[0-9]*.?[0-9]*[PR]/ && GMP.const_defined?(:MPFR_VERSION)
          result << GMP::F.sprintf2(fragment, arg)
        else
          result << (fragment % arg)
        end
      end
      result
    end