[前][次][番号順一覧][スレッド一覧]

ruby-changes:51724

From: k0kubun <ko1@a...>
Date: Wed, 11 Jul 2018 00:07:04 +0900 (JST)
Subject: [ruby-changes:51724] k0kubun:r63936 (trunk): revert r63899

k0kubun	2018-07-11 00:06:59 +0900 (Wed, 11 Jul 2018)

  New Revision: 63936

  https://svn.ruby-lang.org/cgi-bin/viewvc.cgi?view=revision&revision=63936

  Log:
    revert r63899
    
    this is no longer needed due to r63926

  Modified files:
    trunk/benchmark/gc/aobench.rb
    trunk/benchmark/gc/binary_trees.rb
    trunk/benchmark/gc/pentomino.rb
Index: benchmark/gc/binary_trees.rb
===================================================================
--- benchmark/gc/binary_trees.rb	(revision 63935)
+++ benchmark/gc/binary_trees.rb	(revision 63936)
@@ -1,62 +1 @@
-# The Computer Language Shootout Benchmarks
-# http://shootout.alioth.debian.org
-#
-# contributed by Jesse Millikan
-
-# disable output
-alias puts_orig puts
-def puts str
-  # disable puts
-end
-
-def item_check(tree)
- if tree[0] == nil
-  tree[1]
- else
-  tree[1] + item_check(tree[0]) - item_check(tree[2])
- end
-end
-
-def bottom_up_tree(item, depth)
- if depth > 0
-  item_item = 2 * item
-  depth -= 1
-  [bottom_up_tree(item_item - 1, depth), item, bottom_up_tree(item_item, depth)]
- else
-  [nil, item, nil]
- end
-end
-
-max_depth = 16 # ARGV[0].to_i
-min_depth = 4
-
-max_depth = min_depth + 2 if min_depth + 2 > max_depth
-
-stretch_depth = max_depth + 1
-stretch_tree = bottom_up_tree(0, stretch_depth)
-
-puts "stretch tree of depth #{stretch_depth}\t check: #{item_check(stretch_tree)}"
-stretch_tree = nil
-
-long_lived_tree = bottom_up_tree(0, max_depth)
-
-min_depth.step(max_depth + 1, 2) do |depth|
- iterations = 2**(max_depth - depth + min_depth)
-
- check = 0
-
- for i in 1..iterations
-  temp_tree = bottom_up_tree(i, depth)
-  check += item_check(temp_tree)
-
-  temp_tree = bottom_up_tree(-i, depth)
-  check += item_check(temp_tree)
- end
-
- puts "#{iterations * 2}\t trees of depth #{depth}\t check: #{check}"
-end
-
-puts "long lived tree of depth #{max_depth}\t check: #{item_check(long_lived_tree)}"
-
-undef puts
-alias puts puts_orig
+require_relative '../so_binary_trees'
Index: benchmark/gc/pentomino.rb
===================================================================
--- benchmark/gc/pentomino.rb	(revision 63935)
+++ benchmark/gc/pentomino.rb	(revision 63936)
@@ -1,259 +1 @@
-#!/usr/local/bin/ruby
-# This program is contributed by Shin Nishiyama
-
-
-# modified by K.Sasada
-
-NP = 5
-ROW = 8 + NP
-COL = 8
-
-$p = []
-$b = []
-$no = 0
-
-def piece(n, a, nb)
-  nb.each{|x|
-    a[n] = x
-    if n == NP-1
-      $p << [a.sort]
-    else
-      nbc=nb.dup
-      [-ROW, -1, 1, ROW].each{|d|
-        if x+d > 0 and not a.include?(x+d) and not nbc.include?(x+d)
-          nbc << x+d
-        end
-      }
-      nbc.delete x
-      piece(n+1,a[0..n],nbc)
-    end
-  }
-end
-
-def kikaku(a)
-  a.collect {|x| x - a[0]}
-end
-def ud(a)
-  kikaku(a.collect {|x| ((x+NP)%ROW)-ROW*((x+NP)/ROW) }.sort)
-end
-def rl(a)
-  kikaku(a.collect {|x| ROW*((x+NP)/ROW)+ROW-((x+NP)%ROW)}.sort)
-end
-def xy(a)
-  kikaku(a.collect {|x| ROW*((x+NP)%ROW) + (x+NP)/ROW }.sort)
-end
-
-def mkpieces
-  piece(0,[],[0])
-  $p.each do |a|
-    a0 = a[0]
-    a[1] = ud(a0)
-    a[2] = rl(a0)
-    a[3] = ud(rl(a0))
-    a[4] = xy(a0)
-    a[5] = ud(xy(a0))
-    a[6] = rl(xy(a0))
-    a[7] = ud(rl(xy(a0)))
-    a.sort!
-    a.uniq!
-  end
-  $p.uniq!.sort! {|x,y| x[0] <=> y[0] }
-end
-
-def mkboard
-  (0...ROW*COL).each{|i|
-    if i % ROW >= ROW-NP
-      $b[i] = -2
-    else
-      $b[i] = -1
-    end
-    $b[3*ROW+3]=$b[3*ROW+4]=$b[4*ROW+3]=$b[4*ROW+4]=-2
-  }
-end
-
-def pboard
-  return # skip print
-  print "No. #$no\n"
-  (0...COL).each{|i|
-    print "|"
-    (0...ROW-NP).each{|j|
-      x = $b[i*ROW+j]
-      if x < 0
-        print "..|"
-      else
-        printf "%2d|",x+1
-      end
-    }
-    print "\n"
-  }
-  print "\n"
-end
-
-$pnum=[]
-def setpiece(a,pos)
-  if a.length == $p.length then
-    $no += 1
-    pboard
-    return
-  end
-  while $b[pos] != -1
-    pos += 1
-  end
-  ($pnum - a).each do |i|
-    $p[i].each do |x|
-      f = 0
-      x.each{|s|
-        if $b[pos+s] != -1
-          f=1
-          break
-        end
-      }
-      if f == 0 then
-        x.each{|s|
-          $b[pos+s] = i
-        }
-        a << i
-        setpiece(a.dup, pos)
-        a.pop
-        x.each{|s|
-          $b[pos+s] = -1
-        }
-      end
-    end
-  end
-end
-
-mkpieces
-mkboard
-$p[4] = [$p[4][0]]
-$pnum = (0...$p.length).to_a
-setpiece([],0)
-
-
-__END__
-
-# original
-
-NP = 5
-ROW = 8 + NP
-COL = 8
-
-$p = []
-$b = []
-$no = 0
-
-def piece(n,a,nb)
-  for x in nb
-    a[n] = x
-    if n == NP-1
-      $p << [a.sort]
-    else
-      nbc=nb.dup
-      for d in [-ROW, -1, 1, ROW]
-        if x+d > 0 and not a.include?(x+d) and not nbc.include?(x+d)
-          nbc << x+d
-        end
-      end
-      nbc.delete x
-      piece(n+1,a[0..n],nbc)
-    end
-  end
-end
-
-def kikaku(a)
-  a.collect {|x| x - a[0]}
-end
-def ud(a)
-  kikaku(a.collect {|x| ((x+NP)%ROW)-ROW*((x+NP)/ROW) }.sort)
-end
-def rl(a)
-  kikaku(a.collect {|x| ROW*((x+NP)/ROW)+ROW-((x+NP)%ROW)}.sort)
-end
-def xy(a)
-  kikaku(a.collect {|x| ROW*((x+NP)%ROW) + (x+NP)/ROW }.sort)
-end
-
-def mkpieces
-  piece(0,[],[0])
-  $p.each do |a|
-    a0 = a[0]
-    a[1] = ud(a0)
-    a[2] = rl(a0)
-    a[3] = ud(rl(a0))
-    a[4] = xy(a0)
-    a[5] = ud(xy(a0))
-    a[6] = rl(xy(a0))
-    a[7] = ud(rl(xy(a0)))
-    a.sort!
-    a.uniq!
-  end
-  $p.uniq!.sort! {|x,y| x[0] <=> y[0] }
-end
-
-def mkboard
-  for i in 0...ROW*COL
-    if i % ROW >= ROW-NP
-      $b[i] = -2
-    else
-      $b[i] = -1
-    end
-    $b[3*ROW+3]=$b[3*ROW+4]=$b[4*ROW+3]=$b[4*ROW+4]=-2
-  end
-end
-
-def pboard
-  print "No. #$no\n"
-  for i in 0...COL
-    print "|"
-    for j in 0...ROW-NP
-      x = $b[i*ROW+j]
-      if x < 0
-        print "..|"
-      else
-        printf "%2d|",x+1
-      end
-    end
-    print "\n"
-  end
-  print "\n"
-end
-
-$pnum=[]
-def setpiece(a,pos)
-  if a.length == $p.length then
-    $no += 1
-    pboard
-    return
-  end
-  while $b[pos] != -1
-    pos += 1
-  end
-  ($pnum - a).each do |i|
-    $p[i].each do |x|
-      f = 0
-      for s in x do
-        if $b[pos+s] != -1
-          f=1
-          break
-        end
-      end
-      if f == 0 then
-        for s in x do
-          $b[pos+s] = i
-        end
-        a << i
-        setpiece(a.dup, pos)
-        a.pop
-        for s in x do
-          $b[pos+s] = -1
-        end
-      end
-    end
-  end
-end
-
-mkpieces
-mkboard
-$p[4] = [$p[4][0]]
-$pnum = (0...$p.length).to_a
-setpiece([],0)
+require_relative '../app_pentomino'
Index: benchmark/gc/aobench.rb
===================================================================
--- benchmark/gc/aobench.rb	(revision 63935)
+++ benchmark/gc/aobench.rb	(revision 63936)
@@ -1,291 +1 @@
-# AO render benchmark
-# Original program (C) Syoyo Fujita in Javascript (and other languages)
-#      https://code.google.com/p/aobench/
-# Ruby(yarv2llvm) version by Hideki Miura
-#
-
-IMAGE_WIDTH = 256
-IMAGE_HEIGHT = 256
-NSUBSAMPLES = 2
-NAO_SAMPLES = 8
-
-class Vec
-  def initialize(x, y, z)
-    @x = x
-    @y = y
-    @z = z
-  end
-
-  attr_accessor :x, :y, :z
-
-  def vadd(b)
-    Vec.new(@x + b.x, @y + b.y, @z + b.z)
-  end
-
-  def vsub(b)
-    Vec.new(@x - b.x, @y - b.y, @z - b.z)
-  end
-
-  def vcross(b)
-    Vec.new(@y * b.z - @z * b.y,
-            @z * b.x - @x * b.z,
-            @x * b.y - @y * b.x)
-  end
-
-  def vdot(b)
-    @x * b.x + @y * b.y + @z * b.z
-  end
-
-  def vlength
-    Math.sqrt(@x * @x + @y * @y + @z * @z)
-  end
-
-  def vnormalize
-    len = vlength
-    v = Vec.new(@x, @y, @z)
-    if len > 1.0e-17 then
-      v.x = v.x / len
-      v.y = v.y / len
-      v.z = v.z / len
-    end
-    v
-  end
-end
-
-
-class Sphere
-  def initialize(center, radius)
-    @center = center
-    @radius = radius
-  end
-
-  attr_reader :center, :radius
-
-  def intersect(ray, isect)
-    rs = ray.org.vsub(@center)
-    b = rs.vdot(ray.dir)
-    c = rs.vdot(rs) - (@radius * @radius)
-    d = b * b - c
-    if d > 0.0 then
-      t = - b - Math.sqrt(d)
-
-      if t > 0.0 and t < isect.t then
-        isect.t = t
-        isect.hit = true
-        isect.pl = Vec.new(ray.org.x + ray.dir.x * t,
-                          ray.org.y + ray.dir.y * t,
-                          ray.org.z + ray.dir.z * t)
-        n = isect.pl.vsub(@center)
-        isect.n = n.vnormalize
-      else
-        0.0
-      end
-    end
-    nil
-  end
-end
-
-class Plane
-  def initialize(p, n)
-    @p = p
-    @n = n
-  end
-
-  def intersect(ray, isect)
-    d = -@p...(@n)
-    v = ray.dir.vdot(@n)
-    v0 = v
-    if v < 0.0 then
-      v0 = -v
-    end
-    if v0 < 1.0e-17 then
-      return
-    end
-
-    t = -(ray.org.vdot(@n) + d) / v
-
-    if t > 0.0 and t < isect.t then
-      isect.hit = true
-      isect.t = t
-      isect.n = @n
-      isect.pl = Vec.new(ray.org.x + t * ray.dir.x,
-                        ray.org.y + t * ray.dir.y,
-                        ray.org.z + t * ray.dir.z)
-    end
-    nil
-  end
-end
-
-class Ray
-  def initialize(org, dir)
-    @org = org
-    @dir = dir
-  end
-
-  attr_accessor :org, :dir
-end
-
-class Isect
-  def initialize
-    @t = 10000000.0
-    @hit = false
-    @pl = Vec.new(0.0, 0.0, 0.0)
-    @n = Vec.new(0.0, 0.0, 0.0)
-  end
-
-  attr_accessor :t, :hit, :pl, :n
-end
-
-def clamp(f)
-  i = f * 255.5
-  if i > 255.0 then
-    i = 255.0
-  end
-  if i < 0.0 then
-    i = 0.0
-  end
-  i.to_i
-end
-
-def otherBasis(basis, n)
-  basis[2] = Vec.new(n.x, n.y, n.z)
-  basis[1] = Vec.new(0.0, 0.0, 0.0)
-
-  if n.x < 0.6 and n.x > -0.6 then
-    basis[1].x = 1.0
-  elsif n.y < 0.6 and n.y > -0.6 then
-    basis[1].y = 1.0
-  elsif n.z < 0.6 and n.z > -0.6 then
-    basis[1].z = 1.0
-  else
-    basis[1].x = 1.0
-  end
-
-  basis[0] = basis[1].vcross(basis[2])
-  basis[0] = basis[0].vnormalize
-
-  basis[1] = basis[2].vcross(basis[0])
-  basis[1] = basis[1].vnormalize
-end
-
-class Scene
-  def initialize
-    @spheres = Array.new
-    @spheres[0] = Sphere.new(Vec.new(-2.0, 0.0, -3.5), 0.5)
-    @spheres[1] = Sphere.new(Vec.new(-0.5, 0.0, -3.0), 0.5)
-    @spheres[2] = Sphere.new(Vec.new(1.0, 0.0, -2.2), 0.5)
-    @plane = Plane.new(Vec.new(0.0, -0.5, 0.0), Vec.new(0.0, 1.0, 0.0))
-  end
-
-  def ambient_occlusion(isect)
-    basis = Array.new
-    otherBasis(basis, isect.n)
-
-    ntheta    = NAO_SAMPLES
-    nphi      = NAO_SAMPLES
-    eps       = 0.0001
-    occlusion = 0.0
-
-    p0 = Vec.new(isect.pl.x + eps * isect.n.x,
-                isect.pl.y + eps * isect.n.y,
-                isect.pl.z + eps * isect.n.z)
-    nphi.times do |j|
-      ntheta.times do |i|
-        r = rand
-        phi = 2.0 * 3.14159265 * rand
-        x = Math.cos(phi) * Math.sqrt(1.0 - r)
-        y = Math.sin(phi) * Math.sqrt(1.0 - r)
-        z = Math.sqrt(r)
-
-        rx = x * basis[0].x + y * basis[1].x + z * basis[2].x
-        ry = x * basis[0].y + y * basis[1].y + z * basis[2].y
-        rz = x * basis[0].z + y * basis[1].z + z * basis[2].z
-
-        raydir = Vec.new(rx, ry, rz)
-        ray = Ray.new(p0, raydir)
-
-        occisect = Isect.new
-        @spheres[0].intersect(ray, occisect)
-        @spheres[1].intersect(ray, occisect)
-        @spheres[2].intersect(ray, occisect)
-        @plane.intersect(ray, occisect)
-        if occisect.hit then
-          occlusion = occlusion + 1.0
-        else
-          0.0
-        end
-      end
-    end
-
-    occlusion = (ntheta.to_f * nphi.to_f - occlusion) / (ntheta.to_f * nphi.to_f)
-
-    Vec.new(occlusion, occlusion, occlusion)
-  end
-
-  def render(w, h, nsubsamples)
-    cnt = 0
-    nsf = nsubsamples.to_f
-    h.times do |y|
-      w.times do |x|
-        rad = Vec.new(0.0, 0.0, 0.0)
-
-        # Subsampling
-        nsubsamples.times do |v|
-          nsubsamples.times do |u|
-
-            cnt = cnt + 1
-            wf = w.to_f
-            hf = h.to_f
-            xf = x.to_f
-            yf = y.to_f
-            uf = u.to_f
-            vf = v.to_f
-
-            px = (xf + (uf / nsf) - (wf / 2.0)) / (wf / 2.0)
-            py = -(yf + (vf / nsf) - (hf / 2.0)) / (hf / 2.0)
-
-            eye = Vec.new(px, py, -1.0).vnormalize
-
-            ray = Ray.new(Vec.new(0.0, 0.0, 0.0), eye)
-
-            isect = Isect.new
-            @spheres[0].intersect(ray, isect)
-            @spheres[1].intersect(ray, isect)
-            @spheres[2].intersect(ray, isect)
-            @plane.intersect(ray, isect)
-            if isect.hit then
-              col = ambient_occlusion(isect)
-              rad.x = rad.x + col.x
-              rad.y = rad.y + col.y
-              rad.z = rad.z + col.z
-            end
-          end
-        end
-
-        r = rad.x / (nsf * nsf)
-        g = rad.y / (nsf * nsf)
-        b = rad.z / (nsf * nsf)
-        printf("%c", clamp(r))
-        printf("%c", clamp(g))
-        printf("%c", clamp(b))
-      end
-      nil
-    end
-
-    nil
-  end
-end
-
-alias printf_orig printf
-def printf *args
-end
-
-# File.open("ao.ppm", "w") do |fp|
-  printf("P6\n")
-  printf("%d %d\n", IMAGE_WIDTH, IMAGE_HEIGHT)
-  printf("255\n", IMAGE_WIDTH, IMAGE_HEIGHT)
-  Scene.new.render(IMAGE_WIDTH, IMAGE_HEIGHT, NSUBSAMPLES)
-# end
-
-undef printf
-alias printf printf_orig
+require_relative '../app_aobench'

--
ML: ruby-changes@q...
Info: http://www.atdot.net/~ko1/quickml/

[前][次][番号順一覧][スレッド一覧]