| #------------------------------------------------------------- |
| # |
| # Licensed to the Apache Software Foundation (ASF) under one |
| # or more contributor license agreements. See the NOTICE file |
| # distributed with this work for additional information |
| # regarding copyright ownership. The ASF licenses this file |
| # to you 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. |
| # |
| #------------------------------------------------------------- |
| |
| # Override specific built-in function definition types |
| source("./src/test/scripts/functions/misc/FunctionsL2.dml") as Functions |
| |
| M1 = matrix("1 2 3 4", rows=2, cols=2) |
| M2 = matrix("5 6 7 8", rows=2, cols=2) |
| |
| # Built-in transpose accessible since imported override |
| result = t(M2) |
| nothing = Functions::printMatrix(result) |
| |
| # Use imported qr multiple return function |
| [min, max] = Functions::qr(M1) |
| |
| # Use built-in qr |
| [Q, R] = qr(M2) |
| nothing = Functions::printMatrix(Q) |
| nothing = Functions::printMatrix(R) |
| |
| # Use local override before function definition |
| [y, Z] = rand(2) |
| print("rand is " + y + ", " + sum(Z)) |
| |
| # Local function definition override of built-in rand returning matrix and scalar |
| rand = function(int x) return (int y, matrix[double] Z) |
| { |
| print("override rand") |
| y = x*2 |
| Z = matrix(y, rows=4, cols=2) |
| } |