/*
 * Copyright (C) 2014 The Android Open Source Project
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

static data_1_1_t<float, float> g_fabsf_intel_data[] = {
  { // Entry 0
    0x1.p-10,
    -0x1.p-10
  },
  { // Entry 1
    0x1.p-149,
    -0x1.p-149
  },
  { // Entry 2
    0.0,
    0.0
  },
  { // Entry 3
    0x1.p-149,
    0x1.p-149
  },
  { // Entry 4
    0x1.fffffep99,
    0x1.fffffep99
  },
  { // Entry 5
    0x1.p100,
    0x1.p100
  },
  { // Entry 6
    0x1.000002p100,
    0x1.000002p100
  },
  { // Entry 7
    0x1.fffffep19,
    0x1.fffffep19
  },
  { // Entry 8
    0x1.p20,
    0x1.p20
  },
  { // Entry 9
    0x1.000002p20,
    0x1.000002p20
  },
  { // Entry 10
    0x1.fffffep14,
    0x1.fffffep14
  },
  { // Entry 11
    0x1.p15,
    0x1.p15
  },
  { // Entry 12
    0x1.000002p15,
    0x1.000002p15
  },
  { // Entry 13
    0x1.fffffep9,
    0x1.fffffep9
  },
  { // Entry 14
    0x1.p10,
    0x1.p10
  },
  { // Entry 15
    0x1.000002p10,
    0x1.000002p10
  },
  { // Entry 16
    0x1.fffffep8,
    0x1.fffffep8
  },
  { // Entry 17
    0x1.p9,
    0x1.p9
  },
  { // Entry 18
    0x1.000002p9,
    0x1.000002p9
  },
  { // Entry 19
    0x1.fffffep6,
    0x1.fffffep6
  },
  { // Entry 20
    0x1.p7,
    0x1.p7
  },
  { // Entry 21
    0x1.000002p7,
    0x1.000002p7
  },
  { // Entry 22
    0x1.fffffep4,
    0x1.fffffep4
  },
  { // Entry 23
    0x1.p5,
    0x1.p5
  },
  { // Entry 24
    0x1.000002p5,
    0x1.000002p5
  },
  { // Entry 25
    0x1.fffffep3,
    0x1.fffffep3
  },
  { // Entry 26
    0x1.p4,
    0x1.p4
  },
  { // Entry 27
    0x1.000002p4,
    0x1.000002p4
  },
  { // Entry 28
    0x1.fffffep2,
    0x1.fffffep2
  },
  { // Entry 29
    0x1.p3,
    0x1.p3
  },
  { // Entry 30
    0x1.000002p3,
    0x1.000002p3
  },
  { // Entry 31
    0x1.fffffep1,
    0x1.fffffep1
  },
  { // Entry 32
    0x1.p2,
    0x1.p2
  },
  { // Entry 33
    0x1.000002p2,
    0x1.000002p2
  },
  { // Entry 34
    0x1.fffffep0,
    0x1.fffffep0
  },
  { // Entry 35
    0x1.p1,
    0x1.p1
  },
  { // Entry 36
    0x1.000002p1,
    0x1.000002p1
  },
  { // Entry 37
    0x1.fffffep-1,
    0x1.fffffep-1
  },
  { // Entry 38
    0x1.p0,
    0x1.p0
  },
  { // Entry 39
    0x1.000002p0,
    0x1.000002p0
  },
  { // Entry 40
    0x1.fffffep-2,
    0x1.fffffep-2
  },
  { // Entry 41
    0x1.p-1,
    0x1.p-1
  },
  { // Entry 42
    0x1.000002p-1,
    0x1.000002p-1
  },
  { // Entry 43
    0x1.fffffep-3,
    0x1.fffffep-3
  },
  { // Entry 44
    0x1.p-2,
    0x1.p-2
  },
  { // Entry 45
    0x1.000002p-2,
    0x1.000002p-2
  },
  { // Entry 46
    0x1.fffffep-4,
    0x1.fffffep-4
  },
  { // Entry 47
    0x1.p-3,
    0x1.p-3
  },
  { // Entry 48
    0x1.000002p-3,
    0x1.000002p-3
  },
  { // Entry 49
    0x1.fffffep-5,
    0x1.fffffep-5
  },
  { // Entry 50
    0x1.p-4,
    0x1.p-4
  },
  { // Entry 51
    0x1.000002p-4,
    0x1.000002p-4
  },
  { // Entry 52
    0x1.fffffep-6,
    0x1.fffffep-6
  },
  { // Entry 53
    0x1.p-5,
    0x1.p-5
  },
  { // Entry 54
    0x1.000002p-5,
    0x1.000002p-5
  },
  { // Entry 55
    0x1.fffffep-8,
    0x1.fffffep-8
  },
  { // Entry 56
    0x1.p-7,
    0x1.p-7
  },
  { // Entry 57
    0x1.000002p-7,
    0x1.000002p-7
  },
  { // Entry 58
    0x1.fffffep-10,
    0x1.fffffep-10
  },
  { // Entry 59
    0x1.p-9,
    0x1.p-9
  },
  { // Entry 60
    0x1.000002p-9,
    0x1.000002p-9
  },
  { // Entry 61
    0x1.fffffep-11,
    0x1.fffffep-11
  },
  { // Entry 62
    0x1.p-10,
    0x1.p-10
  },
  { // Entry 63
    0x1.000002p-10,
    0x1.000002p-10
  },
  { // Entry 64
    0x1.fffffep-16,
    0x1.fffffep-16
  },
  { // Entry 65
    0x1.p-15,
    0x1.p-15
  },
  { // Entry 66
    0x1.000002p-15,
    0x1.000002p-15
  },
  { // Entry 67
    0x1.fffffep-21,
    0x1.fffffep-21
  },
  { // Entry 68
    0x1.p-20,
    0x1.p-20
  },
  { // Entry 69
    0x1.000002p-20,
    0x1.000002p-20
  },
  { // Entry 70
    0x1.fffffep-101,
    0x1.fffffep-101
  },
  { // Entry 71
    0x1.p-100,
    0x1.p-100
  },
  { // Entry 72
    0x1.000002p-100,
    0x1.000002p-100
  },
  { // Entry 73
    0x1.fffffep127,
    -0x1.fffffep127
  },
  { // Entry 74
    0x1.fffffep127,
    0x1.fffffep127
  },
  { // Entry 75
    HUGE_VALF,
    HUGE_VALF
  },
  { // Entry 76
    HUGE_VALF,
    -HUGE_VALF
  },
  { // Entry 77
    0x1.fffffep127,
    0x1.fffffep127
  },
  { // Entry 78
    0x1.fffffep127,
    -0x1.fffffep127
  },
  { // Entry 79
    0x1.fffffcp127,
    0x1.fffffcp127
  },
  { // Entry 80
    0x1.fffffcp127,
    -0x1.fffffcp127
  },
  { // Entry 81
    0x1.921fb6p1,
    0x1.921fb6p1
  },
  { // Entry 82
    0x1.921fb6p1,
    -0x1.921fb6p1
  },
  { // Entry 83
    0x1.921fb6p0,
    0x1.921fb6p0
  },
  { // Entry 84
    0x1.921fb6p0,
    -0x1.921fb6p0
  },
  { // Entry 85
    0x1.000002p0,
    0x1.000002p0
  },
  { // Entry 86
    0x1.000002p0,
    -0x1.000002p0
  },
  { // Entry 87
    0x1.p0,
    0x1.p0
  },
  { // Entry 88
    0x1.p0,
    -0x1.p0
  },
  { // Entry 89
    0x1.fffffep-1,
    0x1.fffffep-1
  },
  { // Entry 90
    0x1.fffffep-1,
    -0x1.fffffep-1
  },
  { // Entry 91
    0x1.921fb6p-1,
    0x1.921fb6p-1
  },
  { // Entry 92
    0x1.921fb6p-1,
    -0x1.921fb6p-1
  },
  { // Entry 93
    0x1.000002p-126,
    0x1.000002p-126
  },
  { // Entry 94
    0x1.000002p-126,
    -0x1.000002p-126
  },
  { // Entry 95
    0x1.p-126,
    0x1.p-126
  },
  { // Entry 96
    0x1.p-126,
    -0x1.p-126
  },
  { // Entry 97
    0x1.fffffcp-127,
    0x1.fffffcp-127
  },
  { // Entry 98
    0x1.fffffcp-127,
    -0x1.fffffcp-127
  },
  { // Entry 99
    0x1.fffff8p-127,
    0x1.fffff8p-127
  },
  { // Entry 100
    0x1.fffff8p-127,
    -0x1.fffff8p-127
  },
  { // Entry 101
    0x1.p-148,
    0x1.p-148
  },
  { // Entry 102
    0x1.p-148,
    -0x1.p-148
  },
  { // Entry 103
    0x1.p-149,
    0x1.p-149
  },
  { // Entry 104
    0x1.p-149,
    -0x1.p-149
  },
  { // Entry 105
    0.0,
    0.0f
  },
  { // Entry 106
    0.0,
    -0.0f
  }
};
