tor-browser

The Tor Browser
git clone https://git.dasho.dev/tor-browser.git
Log | Files | Refs | README | LICENSE

triangular.https.any.js (47013B)


      1 // META: title=test WebNN API triangular operation
      2 // META: global=window
      3 // META: variant=?cpu
      4 // META: variant=?gpu
      5 // META: variant=?npu
      6 // META: script=../resources/utils.js
      7 // META: timeout=long
      8 
      9 'use strict';
     10 
     11 // https://www.w3.org/TR/webnn/#api-mlgraphbuilder-triangular
     12 // Given a 2-D tensor (matrix), return a 2-D tensor containing either the upper
     13 // or lower triangular part of the input tensor. If the input tensor has greater
     14 // than 2 dimensions it is treated as a batch of matrices and the result has the
     15 // same shape.
     16 //
     17 // dictionary MLTriangularOptions {
     18 //   boolean upper = true;
     19 //   [EnforceRange] long diagonal = 0;
     20 // };
     21 //
     22 // MLOperand triangular(
     23 //     MLOperand input, optional MLTriangularOptions options = {});
     24 
     25 
     26 const getTriangularPrecisionTolerance = () => {
     27  return {metricType: 'ULP', value: 0};
     28 };
     29 
     30 const triangularTests = [
     31  {
     32    'name': 'triangular float32 2D tensor default options',
     33    'graph': {
     34      'inputs': {
     35        'triangularInput': {
     36          'data': [
     37            84.9194564819336,   -86.21631622314453,  50.38116455078125,
     38            -98.47772216796875, -94.51172637939453,  -21.42218589782715,
     39            24.678754806518555, -50.355342864990234, -37.015724182128906,
     40            97.25071716308594,  73.36241149902344,   -75.12358856201172,
     41            41.64348602294922,  58.862911224365234,  -29.916187286376953,
     42            67.48285675048828,  42.132598876953125,  -70.27587127685547,
     43            20.88446617126465,  71.37139892578125,   -84.96932220458984,
     44            -88.97057342529297, 77.58269500732422,   91.03327178955078
     45          ],
     46          'descriptor': {shape: [4, 6], dataType: 'float32'}
     47        }
     48      },
     49      'operators': [{
     50        'name': 'triangular',
     51        'arguments': [{'input': 'triangularInput'}],
     52        'outputs': 'triangularOutput'
     53      }],
     54      'expectedOutputs': {
     55        'triangularOutput': {
     56          'data': [
     57            84.9194564819336,
     58            -86.21631622314453,
     59            50.38116455078125,
     60            -98.47772216796875,
     61            -94.51172637939453,
     62            -21.42218589782715,
     63            0,
     64            -50.355342864990234,
     65            -37.015724182128906,
     66            97.25071716308594,
     67            73.36241149902344,
     68            -75.12358856201172,
     69            0,
     70            0,
     71            -29.916187286376953,
     72            67.48285675048828,
     73            42.132598876953125,
     74            -70.27587127685547,
     75            0,
     76            0,
     77            0,
     78            -88.97057342529297,
     79            77.58269500732422,
     80            91.03327178955078
     81          ],
     82          'descriptor': {shape: [4, 6], dataType: 'float32'}
     83        }
     84      }
     85    }
     86  },
     87  {
     88    'name': 'triangular float32 3D tensor default options',
     89    'graph': {
     90      'inputs': {
     91        'triangularInput': {
     92          'data': [
     93            84.9194564819336,   -86.21631622314453,  50.38116455078125,
     94            -98.47772216796875, -94.51172637939453,  -21.42218589782715,
     95            24.678754806518555, -50.355342864990234, -37.015724182128906,
     96            97.25071716308594,  73.36241149902344,   -75.12358856201172,
     97            41.64348602294922,  58.862911224365234,  -29.916187286376953,
     98            67.48285675048828,  42.132598876953125,  -70.27587127685547,
     99            20.88446617126465,  71.37139892578125,   -84.96932220458984,
    100            -88.97057342529297, 77.58269500732422,   91.03327178955078
    101          ],
    102          'descriptor': {shape: [2, 3, 4], dataType: 'float32'}
    103        }
    104      },
    105      'operators': [{
    106        'name': 'triangular',
    107        'arguments': [{'input': 'triangularInput'}],
    108        'outputs': 'triangularOutput'
    109      }],
    110      'expectedOutputs': {
    111        'triangularOutput': {
    112          'data': [
    113            84.9194564819336,
    114            -86.21631622314453,
    115            50.38116455078125,
    116            -98.47772216796875,
    117            0,
    118            -21.42218589782715,
    119            24.678754806518555,
    120            -50.355342864990234,
    121            0,
    122            0,
    123            73.36241149902344,
    124            -75.12358856201172,
    125            41.64348602294922,
    126            58.862911224365234,
    127            -29.916187286376953,
    128            67.48285675048828,
    129            0,
    130            -70.27587127685547,
    131            20.88446617126465,
    132            71.37139892578125,
    133            0,
    134            0,
    135            77.58269500732422,
    136            91.03327178955078
    137          ],
    138          'descriptor': {shape: [2, 3, 4], dataType: 'float32'}
    139        }
    140      }
    141    }
    142  },
    143  {
    144    'name': 'triangular float32 4D tensor default options',
    145    'graph': {
    146      'inputs': {
    147        'triangularInput': {
    148          'data': [
    149            84.9194564819336,   -86.21631622314453,  50.38116455078125,
    150            -98.47772216796875, -94.51172637939453,  -21.42218589782715,
    151            24.678754806518555, -50.355342864990234, -37.015724182128906,
    152            97.25071716308594,  73.36241149902344,   -75.12358856201172,
    153            41.64348602294922,  58.862911224365234,  -29.916187286376953,
    154            67.48285675048828,  42.132598876953125,  -70.27587127685547,
    155            20.88446617126465,  71.37139892578125,   -84.96932220458984,
    156            -88.97057342529297, 77.58269500732422,   91.03327178955078
    157          ],
    158          'descriptor': {shape: [2, 2, 2, 3], dataType: 'float32'}
    159        }
    160      },
    161      'operators': [{
    162        'name': 'triangular',
    163        'arguments': [{'input': 'triangularInput'}],
    164        'outputs': 'triangularOutput'
    165      }],
    166      'expectedOutputs': {
    167        'triangularOutput': {
    168          'data': [
    169            84.9194564819336,    -86.21631622314453,
    170            50.38116455078125,   0,
    171            -94.51172637939453,  -21.42218589782715,
    172            24.678754806518555,  -50.355342864990234,
    173            -37.015724182128906, 0,
    174            73.36241149902344,   -75.12358856201172,
    175            41.64348602294922,   58.862911224365234,
    176            -29.916187286376953, 0,
    177            42.132598876953125,  -70.27587127685547,
    178            20.88446617126465,   71.37139892578125,
    179            -84.96932220458984,  0,
    180            77.58269500732422,   91.03327178955078
    181          ],
    182          'descriptor': {shape: [2, 2, 2, 3], dataType: 'float32'}
    183        }
    184      }
    185    }
    186  },
    187  {
    188    'name': 'triangular float32 5D tensor default options',
    189    'graph': {
    190      'inputs': {
    191        'triangularInput': {
    192          'data': [
    193            84.9194564819336,   -86.21631622314453,  50.38116455078125,
    194            -98.47772216796875, -94.51172637939453,  -21.42218589782715,
    195            24.678754806518555, -50.355342864990234, -37.015724182128906,
    196            97.25071716308594,  73.36241149902344,   -75.12358856201172,
    197            41.64348602294922,  58.862911224365234,  -29.916187286376953,
    198            67.48285675048828,  42.132598876953125,  -70.27587127685547,
    199            20.88446617126465,  71.37139892578125,   -84.96932220458984,
    200            -88.97057342529297, 77.58269500732422,   91.03327178955078
    201          ],
    202          'descriptor': {shape: [2, 1, 4, 1, 3], dataType: 'float32'}
    203        }
    204      },
    205      'operators': [{
    206        'name': 'triangular',
    207        'arguments': [{'input': 'triangularInput'}],
    208        'outputs': 'triangularOutput'
    209      }],
    210      'expectedOutputs': {
    211        'triangularOutput': {
    212          'data': [
    213            84.9194564819336,   -86.21631622314453,  50.38116455078125,
    214            -98.47772216796875, -94.51172637939453,  -21.42218589782715,
    215            24.678754806518555, -50.355342864990234, -37.015724182128906,
    216            97.25071716308594,  73.36241149902344,   -75.12358856201172,
    217            41.64348602294922,  58.862911224365234,  -29.916187286376953,
    218            67.48285675048828,  42.132598876953125,  -70.27587127685547,
    219            20.88446617126465,  71.37139892578125,   -84.96932220458984,
    220            -88.97057342529297, 77.58269500732422,   91.03327178955078
    221          ],
    222          'descriptor': {shape: [2, 1, 4, 1, 3], dataType: 'float32'}
    223        }
    224      }
    225    }
    226  },
    227  {
    228    'name': 'triangular float32 4D tensor explict options.upper=true',
    229    'graph': {
    230      'inputs': {
    231        'triangularInput': {
    232          'data': [
    233            84.9194564819336,   -86.21631622314453,  50.38116455078125,
    234            -98.47772216796875, -94.51172637939453,  -21.42218589782715,
    235            24.678754806518555, -50.355342864990234, -37.015724182128906,
    236            97.25071716308594,  73.36241149902344,   -75.12358856201172,
    237            41.64348602294922,  58.862911224365234,  -29.916187286376953,
    238            67.48285675048828,  42.132598876953125,  -70.27587127685547,
    239            20.88446617126465,  71.37139892578125,   -84.96932220458984,
    240            -88.97057342529297, 77.58269500732422,   91.03327178955078
    241          ],
    242          'descriptor': {shape: [2, 2, 2, 3], dataType: 'float32'}
    243        }
    244      },
    245      'operators': [{
    246        'name': 'triangular',
    247        'arguments':
    248            [{'input': 'triangularInput'}, {'options': {'upper': true}}],
    249        'outputs': 'triangularOutput'
    250      }],
    251      'expectedOutputs': {
    252        'triangularOutput': {
    253          'data': [
    254            84.9194564819336,    -86.21631622314453,
    255            50.38116455078125,   0,
    256            -94.51172637939453,  -21.42218589782715,
    257            24.678754806518555,  -50.355342864990234,
    258            -37.015724182128906, 0,
    259            73.36241149902344,   -75.12358856201172,
    260            41.64348602294922,   58.862911224365234,
    261            -29.916187286376953, 0,
    262            42.132598876953125,  -70.27587127685547,
    263            20.88446617126465,   71.37139892578125,
    264            -84.96932220458984,  0,
    265            77.58269500732422,   91.03327178955078
    266          ],
    267          'descriptor': {shape: [2, 2, 2, 3], dataType: 'float32'}
    268        }
    269      }
    270    }
    271  },
    272  {
    273    'name': 'triangular float32 4D tensor options.upper=false',
    274    'graph': {
    275      'inputs': {
    276        'triangularInput': {
    277          'data': [
    278            84.9194564819336,   -86.21631622314453,  50.38116455078125,
    279            -98.47772216796875, -94.51172637939453,  -21.42218589782715,
    280            24.678754806518555, -50.355342864990234, -37.015724182128906,
    281            97.25071716308594,  73.36241149902344,   -75.12358856201172,
    282            41.64348602294922,  58.862911224365234,  -29.916187286376953,
    283            67.48285675048828,  42.132598876953125,  -70.27587127685547,
    284            20.88446617126465,  71.37139892578125,   -84.96932220458984,
    285            -88.97057342529297, 77.58269500732422,   91.03327178955078
    286          ],
    287          'descriptor': {shape: [2, 2, 2, 3], dataType: 'float32'}
    288        }
    289      },
    290      'operators': [{
    291        'name': 'triangular',
    292        'arguments':
    293            [{'input': 'triangularInput'}, {'options': {'upper': false}}],
    294        'outputs': 'triangularOutput'
    295      }],
    296      'expectedOutputs': {
    297        'triangularOutput': {
    298          'data': [
    299            84.9194564819336,
    300            0,
    301            0,
    302            -98.47772216796875,
    303            -94.51172637939453,
    304            0,
    305            24.678754806518555,
    306            0,
    307            0,
    308            97.25071716308594,
    309            73.36241149902344,
    310            0,
    311            41.64348602294922,
    312            0,
    313            0,
    314            67.48285675048828,
    315            42.132598876953125,
    316            0,
    317            20.88446617126465,
    318            0,
    319            0,
    320            -88.97057342529297,
    321            77.58269500732422,
    322            0
    323          ],
    324          'descriptor': {shape: [2, 2, 2, 3], dataType: 'float32'}
    325        }
    326      }
    327    }
    328  },
    329  {
    330    'name': 'triangular float32 4D tensor explict options.diagonal=0',
    331    'graph': {
    332      'inputs': {
    333        'triangularInput': {
    334          'data': [
    335            84.9194564819336,   -86.21631622314453,  50.38116455078125,
    336            -98.47772216796875, -94.51172637939453,  -21.42218589782715,
    337            24.678754806518555, -50.355342864990234, -37.015724182128906,
    338            97.25071716308594,  73.36241149902344,   -75.12358856201172,
    339            41.64348602294922,  58.862911224365234,  -29.916187286376953,
    340            67.48285675048828,  42.132598876953125,  -70.27587127685547,
    341            20.88446617126465,  71.37139892578125,   -84.96932220458984,
    342            -88.97057342529297, 77.58269500732422,   91.03327178955078
    343          ],
    344          'descriptor': {shape: [2, 2, 2, 3], dataType: 'float32'}
    345        }
    346      },
    347      'operators': [{
    348        'name': 'triangular',
    349        'arguments':
    350            [{'input': 'triangularInput'}, {'options': {'diagonal': 0}}],
    351        'outputs': 'triangularOutput'
    352      }],
    353      'expectedOutputs': {
    354        'triangularOutput': {
    355          'data': [
    356            84.9194564819336,    -86.21631622314453,
    357            50.38116455078125,   0,
    358            -94.51172637939453,  -21.42218589782715,
    359            24.678754806518555,  -50.355342864990234,
    360            -37.015724182128906, 0,
    361            73.36241149902344,   -75.12358856201172,
    362            41.64348602294922,   58.862911224365234,
    363            -29.916187286376953, 0,
    364            42.132598876953125,  -70.27587127685547,
    365            20.88446617126465,   71.37139892578125,
    366            -84.96932220458984,  0,
    367            77.58269500732422,   91.03327178955078
    368          ],
    369          'descriptor': {shape: [2, 2, 2, 3], dataType: 'float32'}
    370        }
    371      }
    372    }
    373  },
    374  {
    375    'name': 'triangular float32 4D tensor options.diagonal=1',
    376    'graph': {
    377      'inputs': {
    378        'triangularInput': {
    379          'data': [
    380            84.9194564819336,   -86.21631622314453,  50.38116455078125,
    381            -98.47772216796875, -94.51172637939453,  -21.42218589782715,
    382            24.678754806518555, -50.355342864990234, -37.015724182128906,
    383            97.25071716308594,  73.36241149902344,   -75.12358856201172,
    384            41.64348602294922,  58.862911224365234,  -29.916187286376953,
    385            67.48285675048828,  42.132598876953125,  -70.27587127685547,
    386            20.88446617126465,  71.37139892578125,   -84.96932220458984,
    387            -88.97057342529297, 77.58269500732422,   91.03327178955078
    388          ],
    389          'descriptor': {shape: [2, 2, 2, 3], dataType: 'float32'}
    390        }
    391      },
    392      'operators': [{
    393        'name': 'triangular',
    394        'arguments':
    395            [{'input': 'triangularInput'}, {'options': {'diagonal': 1}}],
    396        'outputs': 'triangularOutput'
    397      }],
    398      'expectedOutputs': {
    399        'triangularOutput': {
    400          'data': [
    401            0,
    402            -86.21631622314453,
    403            50.38116455078125,
    404            0,
    405            0,
    406            -21.42218589782715,
    407            0,
    408            -50.355342864990234,
    409            -37.015724182128906,
    410            0,
    411            0,
    412            -75.12358856201172,
    413            0,
    414            58.862911224365234,
    415            -29.916187286376953,
    416            0,
    417            0,
    418            -70.27587127685547,
    419            0,
    420            71.37139892578125,
    421            -84.96932220458984,
    422            0,
    423            0,
    424            91.03327178955078
    425          ],
    426          'descriptor': {shape: [2, 2, 2, 3], dataType: 'float32'}
    427        }
    428      }
    429    }
    430  },
    431  {
    432    'name': 'triangular float32 4D tensor options.diagonal=-1',
    433    'graph': {
    434      'inputs': {
    435        'triangularInput': {
    436          'data': [
    437            84.9194564819336,   -86.21631622314453,  50.38116455078125,
    438            -98.47772216796875, -94.51172637939453,  -21.42218589782715,
    439            24.678754806518555, -50.355342864990234, -37.015724182128906,
    440            97.25071716308594,  73.36241149902344,   -75.12358856201172,
    441            41.64348602294922,  58.862911224365234,  -29.916187286376953,
    442            67.48285675048828,  42.132598876953125,  -70.27587127685547,
    443            20.88446617126465,  71.37139892578125,   -84.96932220458984,
    444            -88.97057342529297, 77.58269500732422,   91.03327178955078
    445          ],
    446          'descriptor': {shape: [2, 2, 2, 3], dataType: 'float32'}
    447        }
    448      },
    449      'operators': [{
    450        'name': 'triangular',
    451        'arguments':
    452            [{'input': 'triangularInput'}, {'options': {'diagonal': -1}}],
    453        'outputs': 'triangularOutput'
    454      }],
    455      'expectedOutputs': {
    456        'triangularOutput': {
    457          'data': [
    458            84.9194564819336,   -86.21631622314453,  50.38116455078125,
    459            -98.47772216796875, -94.51172637939453,  -21.42218589782715,
    460            24.678754806518555, -50.355342864990234, -37.015724182128906,
    461            97.25071716308594,  73.36241149902344,   -75.12358856201172,
    462            41.64348602294922,  58.862911224365234,  -29.916187286376953,
    463            67.48285675048828,  42.132598876953125,  -70.27587127685547,
    464            20.88446617126465,  71.37139892578125,   -84.96932220458984,
    465            -88.97057342529297, 77.58269500732422,   91.03327178955078
    466          ],
    467          'descriptor': {shape: [2, 2, 2, 3], dataType: 'float32'}
    468        }
    469      }
    470    }
    471  },
    472  {
    473    'name': 'triangular float32 4D tensor fully zero options.diagonal=3',
    474    'graph': {
    475      'inputs': {
    476        'triangularInput': {
    477          'data': [
    478            84.9194564819336,   -86.21631622314453,  50.38116455078125,
    479            -98.47772216796875, -94.51172637939453,  -21.42218589782715,
    480            24.678754806518555, -50.355342864990234, -37.015724182128906,
    481            97.25071716308594,  73.36241149902344,   -75.12358856201172,
    482            41.64348602294922,  58.862911224365234,  -29.916187286376953,
    483            67.48285675048828,  42.132598876953125,  -70.27587127685547,
    484            20.88446617126465,  71.37139892578125,   -84.96932220458984,
    485            -88.97057342529297, 77.58269500732422,   91.03327178955078
    486          ],
    487          'descriptor': {shape: [2, 2, 2, 3], dataType: 'float32'}
    488        }
    489      },
    490      'operators': [{
    491        'name': 'triangular',
    492        'arguments':
    493            [{'input': 'triangularInput'}, {'options': {'diagonal': 3}}],
    494        'outputs': 'triangularOutput'
    495      }],
    496      'expectedOutputs': {
    497        'triangularOutput': {
    498          'data': [
    499            0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    500            0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
    501          ],
    502          'descriptor': {shape: [2, 2, 2, 3], dataType: 'float32'}
    503        }
    504      }
    505    }
    506  },
    507  {
    508    'name': 'triangular float32 4D tensor fully copied options.diagonal=-2',
    509    'graph': {
    510      'inputs': {
    511        'triangularInput': {
    512          'data': [
    513            84.9194564819336,   -86.21631622314453,  50.38116455078125,
    514            -98.47772216796875, -94.51172637939453,  -21.42218589782715,
    515            24.678754806518555, -50.355342864990234, -37.015724182128906,
    516            97.25071716308594,  73.36241149902344,   -75.12358856201172,
    517            41.64348602294922,  58.862911224365234,  -29.916187286376953,
    518            67.48285675048828,  42.132598876953125,  -70.27587127685547,
    519            20.88446617126465,  71.37139892578125,   -84.96932220458984,
    520            -88.97057342529297, 77.58269500732422,   91.03327178955078
    521          ],
    522          'descriptor': {shape: [2, 2, 2, 3], dataType: 'float32'}
    523        }
    524      },
    525      'operators': [{
    526        'name': 'triangular',
    527        'arguments':
    528            [{'input': 'triangularInput'}, {'options': {'diagonal': -2}}],
    529        'outputs': 'triangularOutput'
    530      }],
    531      'expectedOutputs': {
    532        'triangularOutput': {
    533          'data': [
    534            84.9194564819336,   -86.21631622314453,  50.38116455078125,
    535            -98.47772216796875, -94.51172637939453,  -21.42218589782715,
    536            24.678754806518555, -50.355342864990234, -37.015724182128906,
    537            97.25071716308594,  73.36241149902344,   -75.12358856201172,
    538            41.64348602294922,  58.862911224365234,  -29.916187286376953,
    539            67.48285675048828,  42.132598876953125,  -70.27587127685547,
    540            20.88446617126465,  71.37139892578125,   -84.96932220458984,
    541            -88.97057342529297, 77.58269500732422,   91.03327178955078
    542          ],
    543          'descriptor': {shape: [2, 2, 2, 3], dataType: 'float32'}
    544        }
    545      }
    546    }
    547  },
    548  {
    549    'name':
    550        'triangular float32 4D tensor options.upper=true options.diagonal=1',
    551    'graph': {
    552      'inputs': {
    553        'triangularInput': {
    554          'data': [
    555            84.9194564819336,   -86.21631622314453,  50.38116455078125,
    556            -98.47772216796875, -94.51172637939453,  -21.42218589782715,
    557            24.678754806518555, -50.355342864990234, -37.015724182128906,
    558            97.25071716308594,  73.36241149902344,   -75.12358856201172,
    559            41.64348602294922,  58.862911224365234,  -29.916187286376953,
    560            67.48285675048828,  42.132598876953125,  -70.27587127685547,
    561            20.88446617126465,  71.37139892578125,   -84.96932220458984,
    562            -88.97057342529297, 77.58269500732422,   91.03327178955078
    563          ],
    564          'descriptor': {shape: [2, 2, 2, 3], dataType: 'float32'}
    565        }
    566      },
    567      'operators': [{
    568        'name': 'triangular',
    569        'arguments': [
    570          {'input': 'triangularInput'},
    571          {'options': {'upper': true, 'diagonal': 1}}
    572        ],
    573        'outputs': 'triangularOutput'
    574      }],
    575      'expectedOutputs': {
    576        'triangularOutput': {
    577          'data': [
    578            0,
    579            -86.21631622314453,
    580            50.38116455078125,
    581            0,
    582            0,
    583            -21.42218589782715,
    584            0,
    585            -50.355342864990234,
    586            -37.015724182128906,
    587            0,
    588            0,
    589            -75.12358856201172,
    590            0,
    591            58.862911224365234,
    592            -29.916187286376953,
    593            0,
    594            0,
    595            -70.27587127685547,
    596            0,
    597            71.37139892578125,
    598            -84.96932220458984,
    599            0,
    600            0,
    601            91.03327178955078
    602          ],
    603          'descriptor': {shape: [2, 2, 2, 3], dataType: 'float32'}
    604        }
    605      }
    606    }
    607  },
    608  {
    609    'name':
    610        'triangular float32 4D tensor options.upper=false options.diagonal=1',
    611    'graph': {
    612      'inputs': {
    613        'triangularInput': {
    614          'data': [
    615            84.9194564819336,   -86.21631622314453,  50.38116455078125,
    616            -98.47772216796875, -94.51172637939453,  -21.42218589782715,
    617            24.678754806518555, -50.355342864990234, -37.015724182128906,
    618            97.25071716308594,  73.36241149902344,   -75.12358856201172,
    619            41.64348602294922,  58.862911224365234,  -29.916187286376953,
    620            67.48285675048828,  42.132598876953125,  -70.27587127685547,
    621            20.88446617126465,  71.37139892578125,   -84.96932220458984,
    622            -88.97057342529297, 77.58269500732422,   91.03327178955078
    623          ],
    624          'descriptor': {shape: [2, 2, 2, 3], dataType: 'float32'}
    625        }
    626      },
    627      'operators': [{
    628        'name': 'triangular',
    629        'arguments': [
    630          {'input': 'triangularInput'},
    631          {'options': {'upper': false, 'diagonal': 1}}
    632        ],
    633        'outputs': 'triangularOutput'
    634      }],
    635      'expectedOutputs': {
    636        'triangularOutput': {
    637          'data': [
    638            84.9194564819336,   -86.21631622314453,  0,
    639            -98.47772216796875, -94.51172637939453,  -21.42218589782715,
    640            24.678754806518555, -50.355342864990234, 0,
    641            97.25071716308594,  73.36241149902344,   -75.12358856201172,
    642            41.64348602294922,  58.862911224365234,  0,
    643            67.48285675048828,  42.132598876953125,  -70.27587127685547,
    644            20.88446617126465,  71.37139892578125,   0,
    645            -88.97057342529297, 77.58269500732422,   91.03327178955078
    646          ],
    647          'descriptor': {shape: [2, 2, 2, 3], dataType: 'float32'}
    648        }
    649      }
    650    }
    651  },
    652  {
    653    'name':
    654        'triangular float32 4D tensor options.upper=false options.diagonal=-1',
    655    'graph': {
    656      'inputs': {
    657        'triangularInput': {
    658          'data': [
    659            84.9194564819336,   -86.21631622314453,  50.38116455078125,
    660            -98.47772216796875, -94.51172637939453,  -21.42218589782715,
    661            24.678754806518555, -50.355342864990234, -37.015724182128906,
    662            97.25071716308594,  73.36241149902344,   -75.12358856201172,
    663            41.64348602294922,  58.862911224365234,  -29.916187286376953,
    664            67.48285675048828,  42.132598876953125,  -70.27587127685547,
    665            20.88446617126465,  71.37139892578125,   -84.96932220458984,
    666            -88.97057342529297, 77.58269500732422,   91.03327178955078
    667          ],
    668          'descriptor': {shape: [2, 2, 2, 3], dataType: 'float32'}
    669        }
    670      },
    671      'operators': [{
    672        'name': 'triangular',
    673        'arguments': [
    674          {'input': 'triangularInput'},
    675          {'options': {'upper': false, 'diagonal': -1}}
    676        ],
    677        'outputs': 'triangularOutput'
    678      }],
    679      'expectedOutputs': {
    680        'triangularOutput': {
    681          'data': [
    682            0, 0, 0, -98.47772216796875, 0, 0,
    683            0, 0, 0, 97.25071716308594,  0, 0,
    684            0, 0, 0, 67.48285675048828,  0, 0,
    685            0, 0, 0, -88.97057342529297, 0, 0
    686          ],
    687          'descriptor': {shape: [2, 2, 2, 3], dataType: 'float32'}
    688        }
    689      }
    690    }
    691  },
    692  {
    693    'name':
    694        'triangular float32 4D tensor fully copied options.upper=false options.diagonal=3',
    695    'graph': {
    696      'inputs': {
    697        'triangularInput': {
    698          'data': [
    699            84.9194564819336,   -86.21631622314453,  50.38116455078125,
    700            -98.47772216796875, -94.51172637939453,  -21.42218589782715,
    701            24.678754806518555, -50.355342864990234, -37.015724182128906,
    702            97.25071716308594,  73.36241149902344,   -75.12358856201172,
    703            41.64348602294922,  58.862911224365234,  -29.916187286376953,
    704            67.48285675048828,  42.132598876953125,  -70.27587127685547,
    705            20.88446617126465,  71.37139892578125,   -84.96932220458984,
    706            -88.97057342529297, 77.58269500732422,   91.03327178955078
    707          ],
    708          'descriptor': {shape: [2, 2, 2, 3], dataType: 'float32'}
    709        }
    710      },
    711      'operators': [{
    712        'name': 'triangular',
    713        'arguments': [
    714          {'input': 'triangularInput'},
    715          {'options': {'upper': false, 'diagonal': 3}}
    716        ],
    717        'outputs': 'triangularOutput'
    718      }],
    719      'expectedOutputs': {
    720        'triangularOutput': {
    721          'data': [
    722            84.9194564819336,   -86.21631622314453,  50.38116455078125,
    723            -98.47772216796875, -94.51172637939453,  -21.42218589782715,
    724            24.678754806518555, -50.355342864990234, -37.015724182128906,
    725            97.25071716308594,  73.36241149902344,   -75.12358856201172,
    726            41.64348602294922,  58.862911224365234,  -29.916187286376953,
    727            67.48285675048828,  42.132598876953125,  -70.27587127685547,
    728            20.88446617126465,  71.37139892578125,   -84.96932220458984,
    729            -88.97057342529297, 77.58269500732422,   91.03327178955078
    730          ],
    731          'descriptor': {shape: [2, 2, 2, 3], dataType: 'float32'}
    732        }
    733      }
    734    }
    735  },
    736  {
    737    'name':
    738        'triangular float32 4D tensor fully zero options.upper=false options.diagonal=-2',
    739    'graph': {
    740      'inputs': {
    741        'triangularInput': {
    742          'data': [
    743            84.9194564819336,   -86.21631622314453,  50.38116455078125,
    744            -98.47772216796875, -94.51172637939453,  -21.42218589782715,
    745            24.678754806518555, -50.355342864990234, -37.015724182128906,
    746            97.25071716308594,  73.36241149902344,   -75.12358856201172,
    747            41.64348602294922,  58.862911224365234,  -29.916187286376953,
    748            67.48285675048828,  42.132598876953125,  -70.27587127685547,
    749            20.88446617126465,  71.37139892578125,   -84.96932220458984,
    750            -88.97057342529297, 77.58269500732422,   91.03327178955078
    751          ],
    752          'descriptor': {shape: [2, 2, 2, 3], dataType: 'float32'}
    753        }
    754      },
    755      'operators': [{
    756        'name': 'triangular',
    757        'arguments': [
    758          {'input': 'triangularInput'},
    759          {'options': {'upper': false, 'diagonal': -2}}
    760        ],
    761        'outputs': 'triangularOutput'
    762      }],
    763      'expectedOutputs': {
    764        'triangularOutput': {
    765          'data': [
    766            0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    767            0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
    768          ],
    769          'descriptor': {shape: [2, 2, 2, 3], dataType: 'float32'}
    770        }
    771      }
    772    }
    773  },
    774 
    775  // float16 tests
    776  {
    777    'name': 'triangular float16 2D tensor default options',
    778    'graph': {
    779      'inputs': {
    780        'triangularInput': {
    781          'data': [
    782            84.9375,   -86.1875,  50.375,     -98.5, -94.5,   -21.421875,
    783            24.671875, -50.34375, -37.03125,  97.25, 73.375,  -75.125,
    784            41.65625,  58.875,    -29.921875, 67.5,  42.125,  -70.25,
    785            20.890625, 71.375,    -85,        -89,   77.5625, 91.0625
    786          ],
    787          'descriptor': {shape: [4, 6], dataType: 'float16'}
    788        }
    789      },
    790      'operators': [{
    791        'name': 'triangular',
    792        'arguments': [{'input': 'triangularInput'}],
    793        'outputs': 'triangularOutput'
    794      }],
    795      'expectedOutputs': {
    796        'triangularOutput': {
    797          'data': [
    798            84.9375, -86.1875,  50.375,     -98.5, -94.5,   -21.421875,
    799            0,       -50.34375, -37.03125,  97.25, 73.375,  -75.125,
    800            0,       0,         -29.921875, 67.5,  42.125,  -70.25,
    801            0,       0,         0,          -89,   77.5625, 91.0625
    802          ],
    803          'descriptor': {shape: [4, 6], dataType: 'float16'}
    804        }
    805      }
    806    }
    807  },
    808  {
    809    'name': 'triangular float16 3D tensor default options',
    810    'graph': {
    811      'inputs': {
    812        'triangularInput': {
    813          'data': [
    814            84.9375,   -86.1875,  50.375,     -98.5, -94.5,   -21.421875,
    815            24.671875, -50.34375, -37.03125,  97.25, 73.375,  -75.125,
    816            41.65625,  58.875,    -29.921875, 67.5,  42.125,  -70.25,
    817            20.890625, 71.375,    -85,        -89,   77.5625, 91.0625
    818          ],
    819          'descriptor': {shape: [2, 3, 4], dataType: 'float16'}
    820        }
    821      },
    822      'operators': [{
    823        'name': 'triangular',
    824        'arguments': [{'input': 'triangularInput'}],
    825        'outputs': 'triangularOutput'
    826      }],
    827      'expectedOutputs': {
    828        'triangularOutput': {
    829          'data': [
    830            84.9375,   -86.1875,  50.375,     -98.5, 0,       -21.421875,
    831            24.671875, -50.34375, 0,          0,     73.375,  -75.125,
    832            41.65625,  58.875,    -29.921875, 67.5,  0,       -70.25,
    833            20.890625, 71.375,    0,          0,     77.5625, 91.0625
    834          ],
    835          'descriptor': {shape: [2, 3, 4], dataType: 'float16'}
    836        }
    837      }
    838    }
    839  },
    840  {
    841    'name': 'triangular float16 4D tensor default options',
    842    'graph': {
    843      'inputs': {
    844        'triangularInput': {
    845          'data': [
    846            84.9375,   -86.1875,  50.375,     -98.5, -94.5,   -21.421875,
    847            24.671875, -50.34375, -37.03125,  97.25, 73.375,  -75.125,
    848            41.65625,  58.875,    -29.921875, 67.5,  42.125,  -70.25,
    849            20.890625, 71.375,    -85,        -89,   77.5625, 91.0625
    850          ],
    851          'descriptor': {shape: [2, 2, 2, 3], dataType: 'float16'}
    852        }
    853      },
    854      'operators': [{
    855        'name': 'triangular',
    856        'arguments': [{'input': 'triangularInput'}],
    857        'outputs': 'triangularOutput'
    858      }],
    859      'expectedOutputs': {
    860        'triangularOutput': {
    861          'data': [
    862            84.9375,   -86.1875,  50.375,     0, -94.5,   -21.421875,
    863            24.671875, -50.34375, -37.03125,  0, 73.375,  -75.125,
    864            41.65625,  58.875,    -29.921875, 0, 42.125,  -70.25,
    865            20.890625, 71.375,    -85,        0, 77.5625, 91.0625
    866          ],
    867          'descriptor': {shape: [2, 2, 2, 3], dataType: 'float16'}
    868        }
    869      }
    870    }
    871  },
    872  {
    873    'name': 'triangular float16 5D tensor default options',
    874    'graph': {
    875      'inputs': {
    876        'triangularInput': {
    877          'data': [
    878            84.9375,   -86.1875,  50.375,     -98.5, -94.5,   -21.421875,
    879            24.671875, -50.34375, -37.03125,  97.25, 73.375,  -75.125,
    880            41.65625,  58.875,    -29.921875, 67.5,  42.125,  -70.25,
    881            20.890625, 71.375,    -85,        -89,   77.5625, 91.0625
    882          ],
    883          'descriptor': {shape: [2, 1, 4, 1, 3], dataType: 'float16'}
    884        }
    885      },
    886      'operators': [{
    887        'name': 'triangular',
    888        'arguments': [{'input': 'triangularInput'}],
    889        'outputs': 'triangularOutput'
    890      }],
    891      'expectedOutputs': {
    892        'triangularOutput': {
    893          'data': [
    894            84.9375,   -86.1875,  50.375,     -98.5, -94.5,   -21.421875,
    895            24.671875, -50.34375, -37.03125,  97.25, 73.375,  -75.125,
    896            41.65625,  58.875,    -29.921875, 67.5,  42.125,  -70.25,
    897            20.890625, 71.375,    -85,        -89,   77.5625, 91.0625
    898          ],
    899          'descriptor': {shape: [2, 1, 4, 1, 3], dataType: 'float16'}
    900        }
    901      }
    902    }
    903  },
    904  {
    905    'name': 'triangular float16 4D tensor explict options.upper=true',
    906    'graph': {
    907      'inputs': {
    908        'triangularInput': {
    909          'data': [
    910            84.9375,   -86.1875,  50.375,     -98.5, -94.5,   -21.421875,
    911            24.671875, -50.34375, -37.03125,  97.25, 73.375,  -75.125,
    912            41.65625,  58.875,    -29.921875, 67.5,  42.125,  -70.25,
    913            20.890625, 71.375,    -85,        -89,   77.5625, 91.0625
    914          ],
    915          'descriptor': {shape: [2, 2, 2, 3], dataType: 'float16'}
    916        }
    917      },
    918      'operators': [{
    919        'name': 'triangular',
    920        'arguments':
    921            [{'input': 'triangularInput'}, {'options': {'upper': true}}],
    922        'outputs': 'triangularOutput'
    923      }],
    924      'expectedOutputs': {
    925        'triangularOutput': {
    926          'data': [
    927            84.9375,   -86.1875,  50.375,     0, -94.5,   -21.421875,
    928            24.671875, -50.34375, -37.03125,  0, 73.375,  -75.125,
    929            41.65625,  58.875,    -29.921875, 0, 42.125,  -70.25,
    930            20.890625, 71.375,    -85,        0, 77.5625, 91.0625
    931          ],
    932          'descriptor': {shape: [2, 2, 2, 3], dataType: 'float16'}
    933        }
    934      }
    935    }
    936  },
    937  {
    938    'name': 'triangular float16 4D tensor options.upper=false',
    939    'graph': {
    940      'inputs': {
    941        'triangularInput': {
    942          'data': [
    943            84.9375,   -86.1875,  50.375,     -98.5, -94.5,   -21.421875,
    944            24.671875, -50.34375, -37.03125,  97.25, 73.375,  -75.125,
    945            41.65625,  58.875,    -29.921875, 67.5,  42.125,  -70.25,
    946            20.890625, 71.375,    -85,        -89,   77.5625, 91.0625
    947          ],
    948          'descriptor': {shape: [2, 2, 2, 3], dataType: 'float16'}
    949        }
    950      },
    951      'operators': [{
    952        'name': 'triangular',
    953        'arguments':
    954            [{'input': 'triangularInput'}, {'options': {'upper': false}}],
    955        'outputs': 'triangularOutput'
    956      }],
    957      'expectedOutputs': {
    958        'triangularOutput': {
    959          'data': [
    960            84.9375, 0,     0,         -98.5, -94.5,    0,   24.671875, 0,
    961            0,       97.25, 73.375,    0,     41.65625, 0,   0,         67.5,
    962            42.125,  0,     20.890625, 0,     0,        -89, 77.5625,   0
    963          ],
    964          'descriptor': {shape: [2, 2, 2, 3], dataType: 'float16'}
    965        }
    966      }
    967    }
    968  },
    969  {
    970    'name': 'triangular float16 4D tensor explict options.diagonal=0',
    971    'graph': {
    972      'inputs': {
    973        'triangularInput': {
    974          'data': [
    975            84.9375,   -86.1875,  50.375,     -98.5, -94.5,   -21.421875,
    976            24.671875, -50.34375, -37.03125,  97.25, 73.375,  -75.125,
    977            41.65625,  58.875,    -29.921875, 67.5,  42.125,  -70.25,
    978            20.890625, 71.375,    -85,        -89,   77.5625, 91.0625
    979          ],
    980          'descriptor': {shape: [2, 2, 2, 3], dataType: 'float16'}
    981        }
    982      },
    983      'operators': [{
    984        'name': 'triangular',
    985        'arguments':
    986            [{'input': 'triangularInput'}, {'options': {'diagonal': 0}}],
    987        'outputs': 'triangularOutput'
    988      }],
    989      'expectedOutputs': {
    990        'triangularOutput': {
    991          'data': [
    992            84.9375,   -86.1875,  50.375,     0, -94.5,   -21.421875,
    993            24.671875, -50.34375, -37.03125,  0, 73.375,  -75.125,
    994            41.65625,  58.875,    -29.921875, 0, 42.125,  -70.25,
    995            20.890625, 71.375,    -85,        0, 77.5625, 91.0625
    996          ],
    997          'descriptor': {shape: [2, 2, 2, 3], dataType: 'float16'}
    998        }
    999      }
   1000    }
   1001  },
   1002  {
   1003    'name': 'triangular float16 4D tensor options.diagonal=1',
   1004    'graph': {
   1005      'inputs': {
   1006        'triangularInput': {
   1007          'data': [
   1008            84.9375,   -86.1875,  50.375,     -98.5, -94.5,   -21.421875,
   1009            24.671875, -50.34375, -37.03125,  97.25, 73.375,  -75.125,
   1010            41.65625,  58.875,    -29.921875, 67.5,  42.125,  -70.25,
   1011            20.890625, 71.375,    -85,        -89,   77.5625, 91.0625
   1012          ],
   1013          'descriptor': {shape: [2, 2, 2, 3], dataType: 'float16'}
   1014        }
   1015      },
   1016      'operators': [{
   1017        'name': 'triangular',
   1018        'arguments':
   1019            [{'input': 'triangularInput'}, {'options': {'diagonal': 1}}],
   1020        'outputs': 'triangularOutput'
   1021      }],
   1022      'expectedOutputs': {
   1023        'triangularOutput': {
   1024          'data': [
   1025            0, -86.1875,  50.375,     0, 0, -21.421875,
   1026            0, -50.34375, -37.03125,  0, 0, -75.125,
   1027            0, 58.875,    -29.921875, 0, 0, -70.25,
   1028            0, 71.375,    -85,        0, 0, 91.0625
   1029          ],
   1030          'descriptor': {shape: [2, 2, 2, 3], dataType: 'float16'}
   1031        }
   1032      }
   1033    }
   1034  },
   1035  {
   1036    'name': 'triangular float16 4D tensor options.diagonal=-1',
   1037    'graph': {
   1038      'inputs': {
   1039        'triangularInput': {
   1040          'data': [
   1041            84.9375,   -86.1875,  50.375,     -98.5, -94.5,   -21.421875,
   1042            24.671875, -50.34375, -37.03125,  97.25, 73.375,  -75.125,
   1043            41.65625,  58.875,    -29.921875, 67.5,  42.125,  -70.25,
   1044            20.890625, 71.375,    -85,        -89,   77.5625, 91.0625
   1045          ],
   1046          'descriptor': {shape: [2, 2, 2, 3], dataType: 'float16'}
   1047        }
   1048      },
   1049      'operators': [{
   1050        'name': 'triangular',
   1051        'arguments':
   1052            [{'input': 'triangularInput'}, {'options': {'diagonal': -1}}],
   1053        'outputs': 'triangularOutput'
   1054      }],
   1055      'expectedOutputs': {
   1056        'triangularOutput': {
   1057          'data': [
   1058            84.9375,   -86.1875,  50.375,     -98.5, -94.5,   -21.421875,
   1059            24.671875, -50.34375, -37.03125,  97.25, 73.375,  -75.125,
   1060            41.65625,  58.875,    -29.921875, 67.5,  42.125,  -70.25,
   1061            20.890625, 71.375,    -85,        -89,   77.5625, 91.0625
   1062          ],
   1063          'descriptor': {shape: [2, 2, 2, 3], dataType: 'float16'}
   1064        }
   1065      }
   1066    }
   1067  },
   1068  {
   1069    'name': 'triangular float16 4D tensor fully zero options.diagonal=3',
   1070    'graph': {
   1071      'inputs': {
   1072        'triangularInput': {
   1073          'data': [
   1074            84.9375,   -86.1875,  50.375,     -98.5, -94.5,   -21.421875,
   1075            24.671875, -50.34375, -37.03125,  97.25, 73.375,  -75.125,
   1076            41.65625,  58.875,    -29.921875, 67.5,  42.125,  -70.25,
   1077            20.890625, 71.375,    -85,        -89,   77.5625, 91.0625
   1078          ],
   1079          'descriptor': {shape: [2, 2, 2, 3], dataType: 'float16'}
   1080        }
   1081      },
   1082      'operators': [{
   1083        'name': 'triangular',
   1084        'arguments':
   1085            [{'input': 'triangularInput'}, {'options': {'diagonal': 3}}],
   1086        'outputs': 'triangularOutput'
   1087      }],
   1088      'expectedOutputs': {
   1089        'triangularOutput': {
   1090          'data': [
   1091            0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
   1092            0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
   1093          ],
   1094          'descriptor': {shape: [2, 2, 2, 3], dataType: 'float16'}
   1095        }
   1096      }
   1097    }
   1098  },
   1099  {
   1100    'name': 'triangular float16 4D tensor fully copied options.diagonal=-2',
   1101    'graph': {
   1102      'inputs': {
   1103        'triangularInput': {
   1104          'data': [
   1105            84.9375,   -86.1875,  50.375,     -98.5, -94.5,   -21.421875,
   1106            24.671875, -50.34375, -37.03125,  97.25, 73.375,  -75.125,
   1107            41.65625,  58.875,    -29.921875, 67.5,  42.125,  -70.25,
   1108            20.890625, 71.375,    -85,        -89,   77.5625, 91.0625
   1109          ],
   1110          'descriptor': {shape: [2, 2, 2, 3], dataType: 'float16'}
   1111        }
   1112      },
   1113      'operators': [{
   1114        'name': 'triangular',
   1115        'arguments':
   1116            [{'input': 'triangularInput'}, {'options': {'diagonal': -2}}],
   1117        'outputs': 'triangularOutput'
   1118      }],
   1119      'expectedOutputs': {
   1120        'triangularOutput': {
   1121          'data': [
   1122            84.9375,   -86.1875,  50.375,     -98.5, -94.5,   -21.421875,
   1123            24.671875, -50.34375, -37.03125,  97.25, 73.375,  -75.125,
   1124            41.65625,  58.875,    -29.921875, 67.5,  42.125,  -70.25,
   1125            20.890625, 71.375,    -85,        -89,   77.5625, 91.0625
   1126          ],
   1127          'descriptor': {shape: [2, 2, 2, 3], dataType: 'float16'}
   1128        }
   1129      }
   1130    }
   1131  },
   1132  {
   1133    'name':
   1134        'triangular float16 4D tensor options.upper=true options.diagonal=1',
   1135    'graph': {
   1136      'inputs': {
   1137        'triangularInput': {
   1138          'data': [
   1139            84.9375,   -86.1875,  50.375,     -98.5, -94.5,   -21.421875,
   1140            24.671875, -50.34375, -37.03125,  97.25, 73.375,  -75.125,
   1141            41.65625,  58.875,    -29.921875, 67.5,  42.125,  -70.25,
   1142            20.890625, 71.375,    -85,        -89,   77.5625, 91.0625
   1143          ],
   1144          'descriptor': {shape: [2, 2, 2, 3], dataType: 'float16'}
   1145        }
   1146      },
   1147      'operators': [{
   1148        'name': 'triangular',
   1149        'arguments': [
   1150          {'input': 'triangularInput'},
   1151          {'options': {'upper': true, 'diagonal': 1}}
   1152        ],
   1153        'outputs': 'triangularOutput'
   1154      }],
   1155      'expectedOutputs': {
   1156        'triangularOutput': {
   1157          'data': [
   1158            0, -86.1875,  50.375,     0, 0, -21.421875,
   1159            0, -50.34375, -37.03125,  0, 0, -75.125,
   1160            0, 58.875,    -29.921875, 0, 0, -70.25,
   1161            0, 71.375,    -85,        0, 0, 91.0625
   1162          ],
   1163          'descriptor': {shape: [2, 2, 2, 3], dataType: 'float16'}
   1164        }
   1165      }
   1166    }
   1167  },
   1168  {
   1169    'name':
   1170        'triangular float16 4D tensor options.upper=false options.diagonal=1',
   1171    'graph': {
   1172      'inputs': {
   1173        'triangularInput': {
   1174          'data': [
   1175            84.9375,   -86.1875,  50.375,     -98.5, -94.5,   -21.421875,
   1176            24.671875, -50.34375, -37.03125,  97.25, 73.375,  -75.125,
   1177            41.65625,  58.875,    -29.921875, 67.5,  42.125,  -70.25,
   1178            20.890625, 71.375,    -85,        -89,   77.5625, 91.0625
   1179          ],
   1180          'descriptor': {shape: [2, 2, 2, 3], dataType: 'float16'}
   1181        }
   1182      },
   1183      'operators': [{
   1184        'name': 'triangular',
   1185        'arguments': [
   1186          {'input': 'triangularInput'},
   1187          {'options': {'upper': false, 'diagonal': 1}}
   1188        ],
   1189        'outputs': 'triangularOutput'
   1190      }],
   1191      'expectedOutputs': {
   1192        'triangularOutput': {
   1193          'data': [
   1194            84.9375,   -86.1875,  0, -98.5, -94.5,   -21.421875,
   1195            24.671875, -50.34375, 0, 97.25, 73.375,  -75.125,
   1196            41.65625,  58.875,    0, 67.5,  42.125,  -70.25,
   1197            20.890625, 71.375,    0, -89,   77.5625, 91.0625
   1198          ],
   1199          'descriptor': {shape: [2, 2, 2, 3], dataType: 'float16'}
   1200        }
   1201      }
   1202    }
   1203  },
   1204  {
   1205    'name':
   1206        'triangular float16 4D tensor options.upper=false options.diagonal=-1',
   1207    'graph': {
   1208      'inputs': {
   1209        'triangularInput': {
   1210          'data': [
   1211            84.9375,   -86.1875,  50.375,     -98.5, -94.5,   -21.421875,
   1212            24.671875, -50.34375, -37.03125,  97.25, 73.375,  -75.125,
   1213            41.65625,  58.875,    -29.921875, 67.5,  42.125,  -70.25,
   1214            20.890625, 71.375,    -85,        -89,   77.5625, 91.0625
   1215          ],
   1216          'descriptor': {shape: [2, 2, 2, 3], dataType: 'float16'}
   1217        }
   1218      },
   1219      'operators': [{
   1220        'name': 'triangular',
   1221        'arguments': [
   1222          {'input': 'triangularInput'},
   1223          {'options': {'upper': false, 'diagonal': -1}}
   1224        ],
   1225        'outputs': 'triangularOutput'
   1226      }],
   1227      'expectedOutputs': {
   1228        'triangularOutput': {
   1229          'data': [
   1230            0, 0, 0, -98.5, 0, 0, 0, 0, 0, 97.25, 0, 0,
   1231            0, 0, 0, 67.5,  0, 0, 0, 0, 0, -89,   0, 0
   1232          ],
   1233          'descriptor': {shape: [2, 2, 2, 3], dataType: 'float16'}
   1234        }
   1235      }
   1236    }
   1237  },
   1238  {
   1239    'name':
   1240        'triangular float16 4D tensor fully copied options.upper=false options.diagonal=3',
   1241    'graph': {
   1242      'inputs': {
   1243        'triangularInput': {
   1244          'data': [
   1245            84.9375,   -86.1875,  50.375,     -98.5, -94.5,   -21.421875,
   1246            24.671875, -50.34375, -37.03125,  97.25, 73.375,  -75.125,
   1247            41.65625,  58.875,    -29.921875, 67.5,  42.125,  -70.25,
   1248            20.890625, 71.375,    -85,        -89,   77.5625, 91.0625
   1249          ],
   1250          'descriptor': {shape: [2, 2, 2, 3], dataType: 'float16'}
   1251        }
   1252      },
   1253      'operators': [{
   1254        'name': 'triangular',
   1255        'arguments': [
   1256          {'input': 'triangularInput'},
   1257          {'options': {'upper': false, 'diagonal': 3}}
   1258        ],
   1259        'outputs': 'triangularOutput'
   1260      }],
   1261      'expectedOutputs': {
   1262        'triangularOutput': {
   1263          'data': [
   1264            84.9375,   -86.1875,  50.375,     -98.5, -94.5,   -21.421875,
   1265            24.671875, -50.34375, -37.03125,  97.25, 73.375,  -75.125,
   1266            41.65625,  58.875,    -29.921875, 67.5,  42.125,  -70.25,
   1267            20.890625, 71.375,    -85,        -89,   77.5625, 91.0625
   1268          ],
   1269          'descriptor': {shape: [2, 2, 2, 3], dataType: 'float16'}
   1270        }
   1271      }
   1272    }
   1273  },
   1274  {
   1275    'name':
   1276        'triangular float16 4D tensor fully zero options.upper=false options.diagonal=-2',
   1277    'graph': {
   1278      'inputs': {
   1279        'triangularInput': {
   1280          'data': [
   1281            84.9375,   -86.1875,  50.375,     -98.5, -94.5,   -21.421875,
   1282            24.671875, -50.34375, -37.03125,  97.25, 73.375,  -75.125,
   1283            41.65625,  58.875,    -29.921875, 67.5,  42.125,  -70.25,
   1284            20.890625, 71.375,    -85,        -89,   77.5625, 91.0625
   1285          ],
   1286          'descriptor': {shape: [2, 2, 2, 3], dataType: 'float16'}
   1287        }
   1288      },
   1289      'operators': [{
   1290        'name': 'triangular',
   1291        'arguments': [
   1292          {'input': 'triangularInput'},
   1293          {'options': {'upper': false, 'diagonal': -2}}
   1294        ],
   1295        'outputs': 'triangularOutput'
   1296      }],
   1297      'expectedOutputs': {
   1298        'triangularOutput': {
   1299          'data': [
   1300            0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
   1301            0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
   1302          ],
   1303          'descriptor': {shape: [2, 2, 2, 3], dataType: 'float16'}
   1304        }
   1305      }
   1306    }
   1307  }
   1308 ];
   1309 
   1310 webnn_conformance_test(
   1311    triangularTests, buildAndExecuteGraph, getTriangularPrecisionTolerance);