The key for release to market has been expired. Needs new key and package name.
[0xbench:0xbench.git] / src / org / zeroxlab / benchmark / CaseArithmetic.java
1 /*
2  * Copyright (C) 2010 0xlab - http://0xlab.org/
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License");
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  *     http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  */
16
17 package org.zeroxlab.zeroxbenchmark;
18
19 import java.util.ArrayList;
20
21 import android.util.Log;
22
23 import android.os.SystemClock;
24
25 import android.app.Activity;
26 import android.content.Context;
27 import android.content.BroadcastReceiver;
28 import android.content.Intent;
29 import android.os.Bundle;
30
31 import org.zeroxlab.zeroxbenchmark.TesterArithmetic;
32
33 public class CaseArithmetic extends Case {
34
35     public static String LIN_RESULT = "LIN_RESULT";
36     protected Bundle mInfo[];
37
38     public static int Repeat = 1;
39     public static int Round  = 3;
40
41     CaseArithmetic() {
42         super("CaseArithmetic", "org.zeroxlab.zeroxbenchmark.TesterArithmetic", Repeat, Round);
43
44         mType = "mflops";
45         String [] _tmp = {
46             "numeric",
47             "mflops",
48             "scientific",
49         };
50         mTags = _tmp;
51
52         generateInfo();
53     }
54
55     public String getTitle() {
56         return "Linpack";
57     }
58
59     public String getDescription() {
60         return "The Linpack Benchmark is a numerically intensive test that has been used for years to measure the floating point performance of computers.";
61     }
62
63     private void generateInfo() {
64         mInfo = new Bundle[Repeat];
65         for (int i = 0; i < mInfo.length; i++) {
66             mInfo[i] = new Bundle();
67         }
68     }
69
70     @Override
71     public void clear() {
72         super.clear();
73         generateInfo();
74     }
75
76     @Override
77     public void reset() {
78         super.reset();
79         generateInfo();
80     }
81
82     @Override
83     public String getResultOutput() {
84         String result = "\n";
85         for (int i = 0; i < mInfo.length; i++) {
86             result += TesterArithmetic.bundleToString(mInfo[i]);
87             result += "\n";
88         }
89         return result;
90     }
91
92     /*
93      *  Get Average Benchmark
94      */
95     public double getBenchmark(Scenario s) {
96         double total = 0;
97         int length = mInfo.length;
98         for (int i = 0; i < length; i++) {
99             total  += mInfo[i].getDouble(TesterArithmetic.MFLOPS);
100         }
101         return total / length;
102     }
103
104     @Override
105     public ArrayList<Scenario> getScenarios () {
106         ArrayList<Scenario> scenarios = new ArrayList<Scenario>();
107
108         Scenario s = new Scenario(getTitle(), mType, mTags);
109         s.mLog = getResultOutput();
110         for (int i=0; i<mInfo.length; i++)
111             s.mResults.add(mInfo[i].getDouble(TesterArithmetic.MFLOPS));
112
113         scenarios.add(s);
114
115         return scenarios;
116     }
117
118     @Override
119     protected boolean saveResult(Intent intent, int index) {
120         Bundle info = intent.getBundleExtra(LIN_RESULT);
121         if (info == null) {
122             Log.i(TAG, "Weird! cannot find LinpackInfo");
123             return false;
124         } else {
125             mInfo[index] = info;
126         }
127
128         return true;
129     }
130 }